どうしようJUnit5

7919a30bc59113c94f31676158cb5881?s=47 irof
December 03, 2016

 どうしようJUnit5

JJUG CCC 2016 Fall

7919a30bc59113c94f31676158cb5881?s=128

irof

December 03, 2016
Tweet

Transcript

  1. @irof Ͳ͏͠Α͏+6OJU 5 ++6($$$'BMM DDD@G

  2. ηογϣϯ֓ཁ ϦϦʔεؒۙͷ+6OJUɻ +6OJUΛ࢖༻͍ͯ͠Δํ͸ଟ͍͔ͱ ࢥ͍·͕͢ɺ࣍όʔδϣϯͷ଍Ի͕ฉ ͖͑ͯ͜·ͨ͠ɻ ݱঢ়ҡ͔࣋Ҡߦ͔ͳͲɺʮͲ͏͠Α͏ʯ ͱࢥ͍ͬͯΔਓ͸ଟ͍Ͱ͠ΐ͏ɻࢲ΋ ͦͷҰਓͰ͢ɻ ͦΜͳΘ͚ͰɺͲ͏͠Α͏͔ߟ͑Δࡐ ྉΛूΊͯ࿩ͦ͏ͱࢥ͍·͢ɻ

  3. ͍͘Β͔ͷ஫ҙ఺ +6OJU͸·ͩϦϦʔε͞Ε͍ͯ· ͤΜɻมΘΓ·͢ɻ ࣮຿Ͱ͸࢖͍ͬͯ·ͤΜɻ ͭ·Γໝ૝ηογϣϯͰ͢ɻ ଞͷ෦԰ʹߦ͜͏ɻ

  4. ͜ͷεϥΠυͰ ࢖༻͍ͯ͠Δόʔδϣϯ +BWB@ +6OJU. (SBEMF +FOLJOT

  5. ϩΰ

  6. Ͳ͏͠Α͏ ͍·͙͢+6OJUΛ࢖͏ʁ +6OJU͔Β+6OJUʹ৐Γ׵͑Δʁ ৽͘͠+6OJU࢖͏ͷ͸ʁ +6OJU࢖͏࣌ʹࠔΔ͜ͱ͸ʁ

  7. ౴͑ͳΜͯͳ͍ͷͰ +6OJU . Λઆ໌͠·͢ ϝϦοτσϝϦοτͱ͔ ͕࣌ؒ͋Ε͹͜ͷล΋࿩͠·͢ +6OJUͰށ࿭͍ͦ͏ͳͱ͜Ζ +6OJU͔Βͷ৐Γ׵͑ੋඇ

  8. +6OJUͷݱঢ়

  9. . .͔͍ͪ͏ͪ .ͦͷ͏ͪ ("2༧ఆ +%,ʹ͋ΘͤΔײ͔͡ͳʁ

  10. .͕Ͱ͢

  11. +6OJUͱͷޓ׵ੑ

  12. ͳ͍

  13. ޓ׵ੑʹ͍ͭͯ ผͷϑϨʔϜϫʔΫͰ͢ ผ෺ͳͷͰޓ׵ͳΜͯ͋ΔΘ͚ ΋ͳ͍Ͱ͢ ʮόʔδϣϯΞοϓͯͦ͠ͷ·· ࢖͑Δʯ͸͋Γ·ͤΜ

  14. ͳΜͰผͳͷʁ

  15. ผ෺ͳͷͰڞଘͰ͖Δ BSUJGBDU*EHSPVQ*E͕ҧ͏ ύοέʔδ΋ҧ͏ JUnit 5 PSHKVOJUKVQJUFS JUnit 4 PSHKVOJU JUnit

    3 KVOJUGSBNFXPSL
  16. ڞଘʁ +6OJU +6OJU1MBUGPSN Ͱ+6OJUΛ ಈ࡞ͤ͞Δ +6OJU 3VOOFS Ͱ+6OJUͷςετ Λ࣮ߦ͢Δ +6OJUͷςετʹ+6OJUͷ3VMFΛ

    ద༻͢Δ ʜʜͳͲ͕ՄೳʹͳΔ
  17. ߏ੒ΛோΊͯΈΔ

  18. +6OJU +6OJU1MBUGPSN +6OJU+VQJUFS +6OJU7JOUBHF

  19. +6OJU1MBUGPSN KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSN DPOTPMF KVOJUQMBUGPSN SVOOFS KVOJUQMBUGPSN HSBEMFQMVHJO KVOJUQMBUGPSN

    MBVODIFS KVOJUQMBUGPSN FOHJOF KVOJUQMBUGPSN TVSFpSFQSPWJEFS
  20. +6OJU+VQJUFS KVOJUKVQJUFSBQJ KVOJUKVQJUFS FOHJOF KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSN FOHJOF KVOJUKVQJUFS NJHSBUJPOTVQQPSU

  21. +6OJU7JOUBHF KVOJUWJOUBHF FOHJOF KVOJUQMBUGPSN FOHJOF KVOJUKVOJU

  22. શମ KVOJUQMBUGPSN DPNNPOT KVOJUQMBUGPSNDPOTPMF KVOJUQMBUGPSNSVOOFS KVOJUQMBUGPSNHSBEMF QMVHJO KVOJUQMBUGPSNMBVODIFS KVOJUQMBUGPSNFOHJOF KVOJUQMBUGPSNTVSFpSF

    QSPWJEFS KVOJUWJOUBHFFOHJOF KVOJUKVQJUFSBQJ KVOJUKVQJUFSFOHJOF KVOJUKVOJU KVOJUKVQJUFSNJHSBUJPO TVQQPSU
  23. %FQFOEFODZ%JBHSBN .ͷ6TFS(VJEFͰ௥Ճ͞Εͨਤ

  24. ࢖ͬͯΈΔ

  25. +6OJUˠ+6OJU KVOJUKVOJU PSHKVOJUKVQJUFSKVOJUKVQJUFSBQJ. PSHKVOJUKVQJUFSKVOJUKVQJUFSFOHJOF. FOHJOF͸࣮ߦ࣌ ͚ͩͰΑ͍

  26. ࢀߟϏϧυπʔϧͷઃఆ IUUQTHJUIVCDPNKVOJUUFBN KVOJUTBNQMFT

  27. ςετίʔυ

  28. ඞਢͷมߋ !5FTUͷύοέʔδ͕ҧ͏ PSHKVOJU5FTU PSHKVOJUKVQJUFSBQJ5FTU

  29. ςετίʔυ PSHKVOJUKVQJUFSBQJ5FTU ݟͨ໨͸ಉ͡Ͱ͢

  30. ೚ҙͷมߋ Ϋϥε͸QVCMJDͰͳͯ͘Α͍ ϝιου͸QVCMJDͰͳͯ͘Α͍ ৽͍͠Ξαʔγϣϯ"1*

  31. ςετίʔυ QVCMJD͡Όͳͯ͘Α͍ QVCMJD͡Όͳͯ͘Α͍ PSHKVOJUKVQJUFSBQJ"TTFSUJPOT ݟͨ໨͸ಉ͡Ͱ͢

  32. ୯७ͳΒύοέʔδมߋͰࡁΉ

  33. ϚΠάϨʔγϣϯʹ͍ͭͯ͸ 6TFS(VJEFʹ݁ߏॻ͔ΕͯΔ ͨͩ͠ɺສೳͳखॱͰ͸ͳ͍

  34. ςετͷ࣮ߦ

  35. *OUFMMJ+*%&" *OUFMMJ+*%&"ͰରԠ͞Εͨ

  36. .ʹͨ͠Β *OUFMMJ+*%&"͕.Λ࢖ͬͯΔ͔Βɻ KVOJUQMBUGPSNMBVODIFS.Λ࢖͑͹0,

  37. (SBEMF UFTU$MBTT UFTU KVOJU1MBUGPSN5FTU ௥Ճ͞ΕΔλεΫ ແޮԽ͞ΕΔλεΫ ੍ޚՄೳ KVOJUQMBUGPSNHSBEMFQMVHJOͷग़൪

  38. ࣮ߦ݁Ռ͸͜Μͳײ͡ )5.-ͷSFQPSU͸ࠓͷͱ͜Ζग़·ͤΜ

  39. +FOLJOT (SBEMF +FOLJOTʹ+6OJU݁ՌͷऩूΛͤͨ݁͞Ռ

  40. +FOLJOT (SBEMF.BWFO͕ಈ͔͘Β໰୊ͳ͍ ݁Ռͷूܭ΋Ͱ͖Δ 9.-ͷߏ଄͸ͦͷ·· !%JTQMBZ/BNFʹ͸ະରԠ ଍͞Ε͚ͨͩͩ͠

  41. ൪֎+6OJUͰಈ͖㽂 6TFS(VJEFࢀর

  42. +6OJUͰ+6OJUΛಈ͔͢ !3VO8JUI +6OJU1MBUGPSNDMBTT

  43. ཧ۶্΋࣮ࡍ΋ಈ͚͘Ͳ ʮڞଘՄೳʯͬͯݴͬͨ΍ͭɻ +6OJUͷ্Ͱ+6OJUΛಈ͔ͨ͠Γɺ +6OJUͷ্Ͱ+6OJUΛಈ͔ͨ͠ Γɺ΍Γ͗͢Δͱ͍͍ײ͡ʹࠞཚ Ͱ͖ͦ͏ɻ

  44. ػೳͷ঺հ

  45. Ұ௨Γͷ঺հ͸ͤͣɺ+6OJUͱͷ ൺֱΛத৺ʹ࿩͠·͢ ػೳશମ͸6TFS(VJEFʹ͓೚ͤ े෼ͳ৘ใ͕͋Δ͚Ͳɺ
 ͦΜͳϘϦϡʔϜ͸ͳ͍Ͱ͢ɻ

  46. +6OJUͱͷ"1*ൺֱ

  47. "1*ൺֱͳͷͰ +6OJU+VQJUFSͷ࿩ KVOJUKVQJUFSBQJ +6OJU1MBUGPSN΍+6OJU7JOUBHFͷ ग़൪͸ͳ͍Ͱ͢

  48. Ξϊςʔγϣϯ Ξαʔγϣϯ ֦ுϞσϧ ߏ଄Խ ύϥϝʔλʔԽ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ

    ֦ுϞ σϧ ߏ଄Խ ύϥ ϝʔ λʔԽ
  49. Ξϊςʔγϣϯ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏ଄Խ ύϥ

    ϝʔ λʔԽ
  50. ͍͍ͩͨͦͷ·· JUnit 4 JUnit 5 !5FTU !5FTU !#FGPSF !#FGPSF&BDI !"GUFS

    !"GUFS&BDI !#FGPSF$MBTT !#FGPSF"MM !"GUFS$MBTT !"GUFS"MM !*HOPSF !%JTBCMFE
  51. ͳ͘ͳͬͨ JUnit 4 ͤͭΊ͍ !3VO8JUI ςετͷ࣮ߦͷ࢓ ํΛม͑Δ΍ͭ !3VMF !$MBTT3VMF ςετ࣮ߦ࣌ʹ͋

    Ε͜Ε͢Δ΍ͭ !'JY.FUIPE0SEFS ςετ࣮ߦॱΛݻ ఆ͢Δ΍ͭ ࣮ߦॱࢦఆ͸.ͰԿ͔ೖΔ༧ఆ
  52. PSEFSJOHϥϕϧΛݟ͍ͯͩ͘͞

  53. ৽͍͠ͷ JUnit 5 ͤͭΊ͍ !/FTUFE &ODMPTFEʹࣅͨ΋ͷ !5BH $BUFHPSZʹࣅͨ΋ͷ !%JTQMBZ/BNF έʔε໊Λࢦఆ͢Δ

    !5FTU'BDUPSZ ಈతςετͰ࢖͏ !&YUFOE8JUI ֦ுͰ࢖͏
  54. Ξαʔγϣϯ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏ଄Խ ύϥ

    ϝʔ λʔԽ
  55. Ξαʔγϣϯ͸෼͚΍͍͢ ςετಈ ͔͢ࢠ ςετ ςετ͞ΕΔࢠ ؀ڥ Ξαʔγϣϯ͸͜͜

  56. ஍ຯͳมߋ ഇࢭ BTTFSU5IBU ௥Ճ -BNCEBΛ࢖͏΋ͷ  BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ

  57. ஍ຯͳมߋ ഇࢭ BTTFSU5IBU ௥Ճ -BNCEBΛ࢖͏΋ͷ  BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ

    Ҿ͖ଓ͖࢖͍͍ͨ৔߹͸ )BNDSFTUΛ࢖͍·͠ΐ͏
  58. ஍ຯͳมߋ ഇࢭ BTTFSU5IBU ௥Ճ -BNCEBΛ࢖͏΋ͷ  BTTFSU"MM BTTFSU5ISPXT BTTFSU5JNFPVU 1SFFNQUJWFMZ

    !5FTUͷ஋ʹ ॻ͍ͯͨ΍ͭ
  59. "TTFSU+͸ಡΜͰ͍ͩ͘͞ WPM ൃച

  60. ֦ுϞσϧ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏ଄Խ ύϥ

    ϝʔ λʔԽ
  61. ֦ுํ๏͕ҰຊԽ 3VOOFS &YUFOTJPO 3VMF

  62. &YUFOTJPOͷ࢖͍ํ &YUFOTJPOͷ࣮૷ΫϥεΛ࡞ͬͯʔ !&YUFOE8JUIͰࢦఆ͢Δ

  63. &YUFOTJPOࡶײ ֦ுϙΠϯτʹԠͨ͡ΠϯλϑΣʔ εΛ࣮૷ͯ͠࡞Δ 3VMFΛγϯϓϧʹͨ͠΋ͷ ख৮Γ͸ྑ͍ 3VMFͷΑ͏ͳສೳײ͸ͳ͍

  64. ࣮૷ΛΈͯΈΑ͏ .PDLJUP&YUFOTJPO KVOJUUFBNʹΑΔ 4QSJOH&YUFOTJPO 4QSJOH'SBNFXPSLʹΑΔ TQSJOHUFTUʹೖΓͦ͏

  65. ͋·Γ৮Εͯͳ͍ͷͰ ৄ͍͠࿩͸ͦͷ͏ͪɻ

  66. ߏ଄Խ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏ଄Խ ύϥ

    ϝʔ λʔԽ
  67. ςετίʔυͷߏ଄Խ !&ODMPTFE !/FTUFE

  68. &ODMPTFE

  69. /FTUFE

  70. &ODMPTFEWT/FTUFE /FTUFE͕֨ஈʹΑ͍ TUBUJDෆཁʢඇTUBUJDʣ !#FGPSF&BDIͱ͔ॻ͚Δ !5FTUͱฒ΂ͯॻ͚Δ

  71. ύϥϝʔλʔԽ Ξ ϊςʔ γϣϯ Ξαʔ γϣϯ ֦ுϞ σϧ ߏ଄Խ ύϥ

    ϝʔ λʔԽ
  72. ύϥϝʔλʔԽ 1BSBNFUFSJ[FE %ZOBNJD5FTU 5IFPSZ

  73. %ZOBNJD5FTU

  74. %ZOBNJD5FTU !5FTU'BDUPSZΛ͚ͭΔ %ZOBNJD5FTUͷΠϯελϯεΛؚΉ 4USFBN΍$PMMFDUJPOͳͲΛฦ͢ ແݶετϦʔϜ΋ॲཧͰ͖Δ

  75. +6OJUʹͳ͍ػೳ ςετϨϙʔτ༻ͷ໊લ͕͚ͭΒ ΕΔ!%JTQMBZ/BNF ϝιουίϯετϥΫλ͕Ҿ਺Λ ड͚औΕΔ γφϦΦςετ޲͚ͷ֦ுʢະʣ

  76. ϝϦοτσϝϦοτ

  77. ϝϦοτ ίʔυ͕୹͘ͳΔ ֦ு೉౓͕Լ͕Δ ʢ৽ػೳʣ σϝϦοτ طଘͷ3VOOFS΍3VMF͕࢖͑ͳ͍ *%&ͷରԠ

  78. ࢀߟ3VMFΛಈ͔͢&YUFOTJPO

  79. 3VMFΛಈ͔͢&YUFOTJPO ಛఆͷ3VMFʢ͓Αͼ֦ுʣݶఆ &YUFSOBM3FTPVSDF 7FSJGJFS &YQFDUFE&YDFQUJPO ͱ͸ݴ͑ڧྗ ͦͷؾʹͳΕ͹ଞ΋Մೳ͔΋

  80. ϝϦοτ༏੎ ଟ͘ͷσϝϦοτ͸ϦϦʔε͞Ε Ε͹ղܾ͞ΕΔ طଘͷ֦ுࢿ࢈͕͋ΔͳΒແཧʹ ৐Γ׵͑ͳͯ͘Α͍ ֦ு೉౓͕Լ͕Δͷ͸େ͖͍

  81. +6OJUͰށ࿭͍ͦ͏ ͳͱ͜Ζ

  82. ಈ͔ͳ͍ܥ !5FTUॻ͍ͯΔͷʹಈ͔ͳ͍ +6OJUͷΛ࢖ͬͯΔ͔΋ʁ !/FTUFE͕ಈ͔ͳ͍ TUBUJDʹͪ͠ΌͬͨΒμϝɻ

  83. ݟ͔ͭΒͳ͍ܥ !5FTU FYQFDUFE ͕ͳ͍ ৽͍͠ΞαʔγϣϯͰɻ !5FTU UJNFPVU ͕ͳ͍ ৽͍͠ΞαʔγϣϯͰɻ BTTFSU5IBU͕ߦํෆ໌

    IBNDSFTUೖΕΕ͹͍͍Αɻ
  84. ؀ڥܥ ϏϧυπʔϧपΓͰӠʑ ϦϦʔε͞ΕΕ͹͜ͳΕΔ͔ͱɻ *%&पΓͰӠʑ ϦϦʔε͞ΕΕ͹͜ͳΕΔ͔ͱɻ

  85. ௒ॏཁ ݴͬͯͨॻ͍ͯͨͷͱ ڍಈ͕ҧ͏ ৘ใ͸όʔδϣϯΛ֬ ೝ͠·͠ΐ͏ɻ

  86. ࡶײ

  87. +6OJU͸ lୈࡾͷγεςϜzͬΆ͍

  88. ݱࡏ࡞͍ͬͯΔγεςϜͷςετ Λ+6OJUͰߦ͏ͷ͸ͳ͍ɻ ͢Ͱʹ+6OJUҎલͰ࡞͍ͬͯΔς ετΛஔ͖׵͑Δඞཁ͸ͳ͍ɻ ϦϦʔεޙʹ৽͘͠࡞ΔͳΒ+6OJU ͰΑͦ͞͏ɻ +%,ରԠ΋ͯ͠Δ͠ɻ

  89. ϑϨʔϜϫʔΫ΍ϥΠϒϥϦͷબ ఆʹؔΘΔػձ͸ଟ͘ͳ͍ɻ ܾ·ͬͨ΋ͷ͕͋ͬͯɺݕূ͞ Εͨ΋ͷҎ֎͸࢖͑ͳ͍ͱ͜Ζ ͸݁ߏଟ͍ɻ ςετ༻ͷϥΠϒϥϦ౳͸·ͩνϟ Ϩϯδ͠΍͍͢ྖҬɻ खΛग़͠΍͍͢΋ͷʹͳͬͯΔ ͱ΋ࢥ͍·͢ɻ