SpringFrameworkãJUnit4.13ããŒã¿3ã«ã¢ããã°ã¬ãŒãããåŸã org.junit.rules.ExpectedException
ã@Deprecated
ã«ãªã£ãŠããããšã«æ°ä»ããŸããããã®å€æŽã«ããããã®ãããªå€§èŠæš¡ãªã³ãŒãããŒã¹ã§å€ãã®èŠåãçæãããŸãã
4.13ã¯4.xã©ã€ã³ã®æåŸã®ãªãªãŒã¹äºå®ã§ããããããã®ãããªäžè¬çã«äœ¿çšãããµããŒããããŠããæ©èœãéæšå¥šã«ããããšã¯æå³ããªããšæããŸãã
éæšå¥šããã®ãŸãŸã«ããŠãããšãæ£åœãªçç±ããªããæ°åïŒæ°çŸäžïŒïŒã®éçºè ãæ©ãŸããã ãã«ãªãã®ã§ã¯ãªãããšå¿é ããŠããŸãã
éæšå¥šã®èŠåã¯ãããè¯ããã®ãå©çšå¯èœã§ããããšã瀺ãè¯ãæ¹æ³ã ãšæããŸãããã®ãããæ£åœãªçç±ããªãèŠåã¯è¡šç€ºãããŸããã ExpectedException
ã¯ç°¡åã«èª€çšãããå¯èœæ§ããããŸãããããã§ãå€ãã®å Žæã§æšå¥šãããŠããŸãã
åé¡ã¯ããŠãŒã¶ãŒããããã®éæšå¥šã®èŠåãåãåãããšãã©ãã»ã©åé¡ãããããšããããšã§ãã ç§ã®äŒç€Ÿã§ã¯ãéæšå¥šã®èŠåã¯ãã«ãæã«è¡šç€ºãããŸããïŒã³ãŒãã衚瀺ããŠããå Žåã®ã¿ïŒã
ãµã ã¯ããã«ãã€ã³ãããããšæããŸãã ç§ã¯ãã¹ãŠã®ïŒæ°ããïŒã³ã³ãã€ã©èŠåãçŠæ¢ããå€ãã®ãã«ããèŠãŠããŸããã ãã®ãããªãããžã§ã¯ãã§ã¯ã ExpectedException
ã䜿çšãããã¹ãŠã®ãã¹ãã¯ã©ã¹ãå®è¡ãã SuppressWarnings
ã¢ãããŒã·ã§ã³ãè¿œå ããå¿
èŠããããŸãã
@stefanbirkner WDYTïŒ
ã¯ã©ã€ã¢ã³ãã«èŠåãæå¶ãããã®ã¯åççãªããã§ãã ãŸãããã¹ãŠã®éæšå¥šèŠåãæå¶ããããšãã§ããŸãã éæšå¥šã®èŠåããšã©ãŒãšããŠæ±ããšãäœãéæšå¥šã«ããããšãã§ããªããªããŸãã
éæšå¥šã¯ãå€ãAPIã«åé¡ããããã¯ããã«åªããAPIãå©çšå¯èœã§ããããšã人ã ã«ç€ºãããã®æåã®æ¹æ³ã§ãã
éçºè ãIDEå ã§ããŒã«ã«ã«èŠåãæå¶ã§ããããšãç解ããŠããŸãã ãã ããJUnit 4.xã®ïŒäºå®ãããŠããïŒæçµãªãªãŒã¹ã§ã³ã¢æ©èœãå»æ¢ããããšã¯è¯ãèãã§ããããšã«åæããŸããã
ç§èŠã§ããããã¬ãŒã ã¯ãŒã¯ã®æçµãªãªãŒã¹ãç¹ã«JUnit 4ã®ããã«åºã䜿çšãããŠãããã¬ãŒã ã¯ãŒã¯ã®ã³ã¢æ©èœãå»æ¢ããããšã¯ããå§ãã§ããŸããã
å
·äœçãªäŸãšããŠãã³ã¢Spring Frameworkãã¹ãã¹ã€ãŒãã§ã¯ã ExpectedException
ã«ãŒã«ã®äœ¿çšã«é¢ããæ°åã®éæšå¥šèŠåããããŸãã
ç§ãã¡ãæã£ãŠããå¯äžã®ãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
ExpectedException
ã䜿çšãããã¹ãŠã®ãã¹ãã¯ã©ã¹ã§éæšå¥šã®èŠåãæå¶ããŸããExpectedException
ã䜿çšãããã¹ãŠã®ãã¹ãã¯ã©ã¹ã§ã®äœ¿çšãã移è¡ããŸããïŒ1ã䜿çšãããšãã¯ã©ã¹ã¬ãã«ã§èŠåãæå¶ããã¹ã¯ãªããã䜿çšããŠãããå®çŸã§ããå¯èœæ§ããããŸãããããã«ãããç¥ã£ãŠããå¿
èŠããããç¡èŠããªãå¯èœæ§ã®ããä»ã®APIã®éæšå¥šèŠåãæå¶ãããŸãã ãã以å€ã®å Žåã¯ãåãã¹ãã¯ã©ã¹ãæåã§å®è¡ãã ExpectedException
APIã®äœ¿çšãéæšå¥šã«ããå¿
èŠããããŸããããã«ã¯ã圱é¿ãåãããã¹ãŠã®ãã¹ãã¡ãœããã§ã®ã«ãŒã«ã€ã³ã¹ã¿ã³ã¹ãšã®ãã¹ãŠã®åäžã®çžäºäœçšãå«ãŸããŸãã
ïŒ2ã䜿çšããå Žåãããã¯æåã§å®è¡ããã®ã«æ°æ¥ãããå¯èœæ§ã®ããäž»èŠãªäœæ¥ã§ãã éšåçãªèªååã¯å¯èœãããããŸããããèªååïŒã¹ã¯ãªãããªã©ïŒãžã®æè³ã¯ããèªäœã§ããªãåºç¯å²ã«åã¶å¯èœæ§ããããŸãã
ïŒ3ã䜿çšãããšãïŒç§ãã¡ã®èŠ³ç¹ããïŒäžèŠãªéæšå¥šèŠåãçºçããå®éã«æ°ã«ãªãéæšå¥šèŠåã®ãã¥ãŒãæã£ãŠããŸãããŠã£ã³ããŠã
ïŒ2ãå®è¡ãããšãJUnit5ãžã®å°æ¥ã®ç§»è¡ãç°¡çŽ åãããŸãã
ïŒ2ãå®è¡ãããšãJUnit5ãžã®å°æ¥ã®ç§»è¡ãç°¡çŽ åãããŸãã
ãã¡ããã ããã«ãããJUnitJupiterãŸãã¯AssertJãžã®ç§»è¡ãç°¡åã«ãªãå¯èœæ§ããããŸãã ãã ãããã¹ãŠã®äººãæ¢åã®ãã¹ãã¹ã€ãŒãã移è¡ãããããŸãã¯ç§»è¡ããå¿ èŠãããããã§ã¯ãããŸããã
ãããã£ãŠãç§ã¯ãããæå¹ãªè°è«ãšã¯èŠãªããŸããã
ãããæåŸã®JUnit4.xãªãªãŒã¹ã§ããå¯èœæ§ãé«ãã®ã¯ãç§ãã¡ãç©äºãéæšå¥šã«ãããã©ããã«é¢ä¿ããŠããçç±ãããããŸããã JUnitã_any_APIãåé€ããããšã¯ãã£ãã«ãªããããéæšå¥šã¯APIããªããªãããšã瀺ããã®ã§ã¯ãããŸããã ããã¯ãAPIããµããŒããããŠããªãããããåªããAPIãååšããå¯èœæ§ãããããšã瀺ããŠããŸãã ãã®å Žåãäž¡æ¹ãšãåœãŠã¯ãŸããŸãïŒ assertThrows()
䜿çšããæ¹ããããšèããããããã®ã«ãŒã«ã«å¯Ÿããææ¡ãããå€æŽãæåŠããŸããïŒ
Springã¯ExpectedException
ãããã£ãããšç§»è¡ããããšããå§ãããŸãã ããå®å
šã§ç解ãããããã¹ãã«å°éããããã«ãæ°æ¥éã®äœæ¥ãæ°ãæã«æž¡ã£ãŠè¡ãããããšã¯ãåå©ã®ããã«æããŸãã å©ç¹ã¯ãJUnitã®æè¿ã®å€æŽã«ããŸã詳ãããªãä»ã®äººãã ExpectedException
ãåé¿ããããšãç¥ã£ãŠããããšã§ãã
ErrorProneã«ã¯ãæšå¥šãããä¿®æ£ãæäŸãããããŸãããããã£ãŠããã®åé¡ã解決ããã®ã«æ°æ¥ããããšã¯æããŸããã
TL; DRExpectedExceptionã®éæšå¥šã«è³æã§ãã
@kcooneyã¯ãJUnit 4ã®èšèšäžã®æ±ºå®ã¯å€æŽã®
äŸå€ããã§ãã¯ããããè¯ãæ¹æ³ãããããšã人ã
ã«äŒããã®ã§ãéæšå¥šã«ããããšã¯æçã ãšæããŸãã ç§ã¯éå»10幎éãããã€ãã®äŒç€Ÿã§åããŠããŸãããã @Test(expected=ABeautifulException.class
ãããåªãããã®ãããããšã«é©ããŠãã人ãåžžã«ããŸãã éæšå¥šã¯ãIDEã§ã¹ãã©ã€ããããã³ãŒããèŠããšéåžžèŠãããããã圌ãã«ãšã£ãŠäŸ¡å€ããããŸãã
ãããã®èŠåãä¿®æ£ããå¿ èŠããªããããéæšå¥šã®èŠåã¯ç ©ãããå ŽåããããŸãã ããã®èµ·æºã¯ãJUnit4ãéæšå¥šã䜿çšããæ¹æ³ã§ãã ãããã£ãŠãExpectedExceptionãéæšå¥šã«ããªãïŒãããŠæçµçã«ã¯éæšå¥šããŸã£ãã䜿çšããªãïŒããšãé€ãã°ãããã«å¯Ÿããä¿®æ£ã¯ãªããšæããŸãã
æåŸã«ãªããŸããããéæšå¥šã®èŠåãçºçããå Žåã«ãã«ããå£ããŠãJUnit4.13ã«ç°¡åã«ã¢ããã°ã¬ãŒãã§ããªãäŒæ¥ããããŸãã ãããã®äŒæ¥ãã©ãã ãååšãããã¯ããããŸããããããã®äŒæ¥ã¯ãaïŒãã®ãã«ãããªã·ãŒãæã£ãŠãããbïŒJUnit4.13ã«ã¢ããã°ã¬ãŒãããããšèããŠããŸãã
@sdeleuzeã@ mp911deãšããªããå»æ¢ãå ã«æ»ãã«æ祚@rweislederã éæšå¥šã«ããªãçç±ãæããŠããã ããã°å©ãããŸãã
ããå°ã詳ãã説æãããšãSpring Frameworkã®ã³ãŒãããŒã¹ãJUnitã®ExpectedException
ããAssertJã®assertThatExceptionOfType
ã«ç§»è¡ããã®ã«çŽ1ã5æ¥ããããŸããã
圹ç«ã€ãããããªãå°ããªææ¡ã®1ã€ã¯ãã¯ã©ã¹å
šäœã§ã¯ãªãã ExpectedException.none()
ã¡ãœããã®ã¿ãéæšå¥šã«ããããšãæ€èšããããšã§ãã ããã¯äŸç¶ãšããŠäººã
ã«èŠåãäžããŸãããããã¯åç¬ã§æå¶ããããšãã¯ããã«å®¹æã«ããŸãã
JUnitã®ExpectedException
ã¯ã @Test(expected = âŠ)
ã ãã§ãªããããåºç¯ãªäŸå€ã¢ãµãŒã·ã§ã³ãå®è¡ãããã¹ãã®ããªããã£ãåãšããŠäœ¿çšãããŸãã ãããã¯éåžžãHamcrestãŸãã¯çµã¿èŸŒã¿ã®ã¢ãµãŒã·ã§ã³ã«äŸåãããã¹ãã§ãããAssertJãªã©ã«ã¯ããŸãäŸåããŸããã
JUnit 4.13ã䜿çšããŠããããšã¯ãã¢ã¯ãã£ããªã¡ã³ããã³ã¹ãè¡ãããŠããããšã瀺ããŠããŸãã JUnit 4.x APIã«æ®ã£ãŠããã³ãŒãããŒã¹ã¯ãããã«JUnit 5 APIã«ç§»è¡ãããªãå¯èœæ§ããããŸããããŽã£ã³ããŒãžãšã³ãžã³ã«ç§»è¡ããå¯èœæ§ã®ããAPIãç¶æããŸãã çªç¶éæšå¥šã«ãªã£ãã¯ã©ã¹ããããšãæ°ããèŠåãçæãããã³ãŒãã¯ãŸã æ©èœããŠããå¯èœæ§ããããŸãããå¥ã®ã¢ãµãŒã·ã§ã³ãŠãŒãã£ãªãã£ã«ç§»è¡ããããã®è¿œå ã®äœæ¥ãçºçããŸããã
éæšå¥šãšæ¹åãããAPIã®å°å ¥ãæ°å芳å¯ããŸããã ã»ãšãã©ã®å Žåãéæšå¥šã¯å®éã®ãŠãŒã¶ãŒã§ã¯ãªãã¡ã³ããã«åœ¹ç«ã¡ãŸããã ãŠãŒã¶ãŒåŽã§ã¯ãããã¯ã»ãšãã©ã®åªåãçã¿åºããŸããããå©çã¯ãããŸããã§ããã
圹ç«ã€ãããããªãå°ããªææ¡ã®1ã€ã¯ãã¯ã©ã¹å šäœã§ã¯ãªãã
ExpectedException.none()
ã¡ãœããã®ã¿ãéæšå¥šã«ããããšãæ€èšããããšã§ãã ããã¯äŸç¶ãšããŠäººã ã«èŠåãäžããŸãããããã¯åç¬ã§æå¶ããããšãã¯ããã«å®¹æã«ããŸãã
JUnit 4ããŒã ãExpectedException
ã«ãŒã«ã®å»æ¢ãåãæ¶ããªãããšã決å®ããå Žåãããã¯é©åãªåŠ¥åæ¡ã«ãªããšæããŸãã
ç§ã¯ããã@Test(expected = ...)
æã
ã¯æã£ãŠããã®ã§ããŸããå»æ¢ãããã¹ãã§assertThrows
ä»ããã ãŸãã¯ãå°ãªããšãExpectedException
ãžã®åç
§ãå±æ§ã®Javadocããåé€ããå¿
èŠããããŸãã
ç§ã¯ããã
@Test(expected = ...)
æã ã¯æã£ãŠããã®ã§ããŸããå»æ¢ãããã¹ãã§assertThrows
ä»ããã ãŸãã¯ãå°ãªããšãExpectedException
ãžã®åç §ãå±æ§ã®Javadocããåé€ããå¿ èŠããããŸãã
ã¯ãã expected
ã§å±æ§org.junit.Test
ããããå»æ¢ãããã¹ãã§ãã ãããã®å Žåãã org.junit.Test
ããã³expected
å±æ§ã®ã¯ã©ã¹ã¬ãã«ã®JavadocãæŽæ°ããŠã assertThrows
䜿çšãæšå¥šããå¿
èŠããããŸãã
ExpectedException.none()
ã ããéæšå¥šã«ããããšã«è³æã§ãã
éæšå¥šã䜿çšããŠæ°æ©èœãã¢ããã¿ã€ãºããããšã¯ãJUnitéçºããã»ã¹ãžã®ä¿¡é ŒãæãªããããŒãžã§ã³4.13ã®æ¡çšã劚ãããããªæéã®ãããã¢ãããŒãã ãšæããŸãã
å€ãæ©èœãšæ°ããæ©èœãéæšå¥šã«ãªãããšãªãå ±åããå Žåã¯ãããŒãžã§ã³ãéè€ããã¯ãã§ãã ä»ã®äººãææããŠããããã«ãéæšå¥šã®ã¡ãœããã«äŸåããããšã¯ãã³ãŒãã®å質ãé«ãä¿ã€å€ãã®ãããžã§ã¯ãã«ãšã£ãŠã¯ç¡é§ã§ãã ã€ãŸããJUnitã®ã¢ããã°ã¬ãŒãã¯ãã³ãŒãããŒã¹å šäœã移è¡ããããã®å€æŽãšåãã³ãããã§è¡ãå¿ èŠããããŸãã
æ©èœãéæšå¥šã«ãªããåããªãªãŒã¹ã§çœ®æãè¿œå ãããå¯äžã®ç¶æ³ã¯ãæ©èœãæ ¹æ¬çã«å£ããŠãããããã«ç§»è¡ããå¿
èŠãããå Žåã ãšæããŸãã ExpectedException
ãæ ¹æ¬çã«å£ããŠãããšã¯æããŸããã
æ°ããäŸåé¢ä¿ããã§ãã¯ããŠãã©ã®ãããªå€æŽãè¡ãããã®ããã³ãŒããã©ã®ããã«æºåã§ããã®ãã確èªããããšããããããŸããã ã§ã¯ãJUnit 4.13ã®ç§»è¡ã«åããŠã³ãŒããæºåããã«ã¯ã©ãããã°ããã§ããïŒ ExpectedException
ãéæšå¥šã«ãªãããšã¯ç¥ã£ãŠããŸããããŸã é©åãªä»£æ¿åããããŸããã ãã®æ··ä¹±ãå®å
šã«åé¿ããããã«ãäŸå€ããã£ããããŠãã§ãã¯ããããã«ç¬èªã®ã³ãŒããå®è£
ããå¿
èŠããããŸãã
4.13ãæçµçãª4.xãªãªãŒã¹ã«ãªãäºå®ã§ãããšããçç±ã ãã§ããŸãšããªãœãããŠã§ã¢éçºæ
£è¡ãæŸæ£ããã®ã¯è¯ãçç±ã§ã¯ãããŸããã å®éã4.13ã¯ExpectedException
éæšå¥šãªãã§ãªãªãŒã¹ã§ãã4.14ã¯éæšå¥šã®ç¿æ¥ãªãªãŒã¹ã§ããŸãã ããã¯ãéçºè
ã«é床ã®ãã¬ãã·ã£ãŒãªãã«ç§»è¡ãè¡ãããã®å°ãã®æ¯æããäžããªãããã¡ãã»ãŒãžãäŒããã§ãããã
å€ãæ©èœãšæ°ããæ©èœãéæšå¥šã«ãªãããšãªãå ±åããå Žåã¯ãããŒãžã§ã³ãéè€ããã¯ãã§ãã
ã©ãããŠïŒ éæšå¥šã®ç®çã¯ãç§ãã¡ã®æèŠã§ã¯ãããè¯ãAPIã§ããæ°ããããšã人ã ã«èªèãããããšã§ãã
ãŸãã䟵襲æ§ãäœãããããã«ExpectedException.none()
ã®ã¿ãéæšå¥šã«ããå¿
èŠãããããšã«ãåæããŸãã
@stefanbirknerããããã§ããïŒ
@marcphilippã³ãŒããæŽæ°ãããšããäœãééã£ãããšãããŠããªãéããéæšå¥šã«ãªãããšãªãåäœãããããšæã£ãŠããŸãã æ©èœãå»æ¢ãããšåæã«ä»£æ¿åãæäŸããã«ã¯ãç
©ãããããŸãã 代ããã«ã4.13ãªãªãŒã¹ããŒãã«ã¯ã ExpectedException
ã次ã®ããŒãžã§ã³ã§éæšå¥šã«ãªããšèšèŒãããŠããã眮ãæããææ¡ããå¿
èŠããããŸãã ããããã°ããã®éã«éæšå¥šãèš±å¯ããããšãªããã³ãŒãã段éçã«ç§»è¡ããæ¹æ³ããããŸãã ããã¯ãJUnit 4.12ãäœå¹Žã䜿çšããŠããŠã倧ããªå€æŽãæãŸãªããŠãŒã¶ãŒãžã®åºæ¬çãªç€Œåã§ãã
éæšå¥šã®èŠåã®ãã€ã³ãã¯ãã³ãŒãã眮æã«åããŠç§»è¡ããæéãäžããããã®ãã®ã§ãã éæšå¥šã®èŠåãåé¿ããå¿
èŠãããå Žåã¯ã ExpectedException.none()
å§ä»»ããç¬èªã®äžæãã¡ã¯ããªã¡ãœãããäœæã§ããŸãã
OKãPRã¯åé¡ãããçšåºŠè»œæžããŸããããã¯ééããªãæ£ããæ¹åãžã®äžæ©ã§ãã ãããããŠãããŠããããšãïŒ
ãŠãŒã¶ãŒããã¡ã¯ããªã¡ãœãããå®è£
ããããšãææ¡ããã®ã§ã¯ãªããã³ãŒãã¯ç¬èªã®éæšå¥šã§ãªãã¡ãœãããæäŸããããšãã§ããŸãïŒããããnone
ã«è¿œå ã®åŒæ°ããããŸãïŒã
ãŠãŒã¶ãŒã«ç§»è¡ããŒãžã§ã³ãæäŸããããšã«å¯ŸããæµæããŸã ç解ããŠããŸããã äºææ§ã®ãªãå€æŽãå®è£ ããå Žåã匷å¶ããã«ç§»è¡ã§ããããŒãžã§ã³ãäœæããããšã¯éåžžã«äžè¬çã§ãã
移è¡ããŒãžã§ã³ããªãå ŽåããŠãŒã¶ãŒã¯4.13ãè©Šãã倧éã®èŠåã確èªããŠã4.12ã«æ»ããŸãã
移è¡ããŒãžã§ã³ã§ã¯ããŠãŒã¶ãŒã¯4.14ãè©Šãã倧éã®èŠåã衚瀺ãã4.13ãè©ŠããèŠåã衚瀺ãããããã䜿çšããŸãã ããã«4.14ã«æŽæ°ãããã®ãããã°ãæŽæ°ããæ£åœãªçç±ããªãéãã4.13ããã®ãŸãŸäœ¿çšãããã®ããããŸãã ã©ã¡ãã«ããŠãåé¡ãªãã¯ãã§ãã
ãŸãããã®éæšå¥šãJUnit 4ã§çºçããçç±ãããããŸãããäž¡æ¹ã®ããŒãžã§ã³ãäžæçã«ãµããŒãããããã«ã junit-vintage-engine
ã䜿çšããŠJUnit5ã«ç§»è¡ããŠããŸãã ããããããã¯JUnit 4.13ãåŒã蟌ã¿ãŸããããã¯ãäœããã®çç±ã§ãæåŸã®ãªãªãŒã¹ã®1ã€ã§ããå¯èœæ§ãé«ããã®ïŒé·å¹ŽãµããŒããããŠãããã®ïŒãéæšå¥šã«ããããšããå§ãããŸãã
ãŸãã代æ¿æ¡ãææãã以å€ã«éæšå¥šã®çç±ã¯ãªãããã§ããããã¯ãå°ãªããšã代æ¿æ¡ãæäŸããããšã§éæã§ããå¯èœæ§ããããŸãïŒã³ã³ã¹ãã©ã¯ã¿ãŒãå ¬éããããå¥ã®éçã¡ãœãããæäŸããŸã-ã¡ãã»ãŒãžéä¿¡ïŒã
ExpectedException
ã³ãŒãã¯ãïŒåœæïŒäŸ¿å©ãªæ¹æ³ã§æäŸãããJUnitã®åºæ¬æ©èœã䜿çšããã ããªã®ã§ãçŸåšãæ©èœãç¶ããŸãïŒãããŠãä»åŸã®ãªãªãŒã¹ã§ãæ©èœãç¶ããŸãïŒã
äŸå€ã«é¢ããããããã£ãã¢ãµãŒãããããã®ä»£æ¿æ段ã¯äœã§ãã...
å€ãã³ãŒãïŒ
thrown.expect(StatusRuntimeException.class);
thrown.expect(its(StatusRuntimeException::getStatus, toBe(Status.INVALID_ARGUMENT)));
GrpcDispatch.makeRequest(service::enableJob, JobReference.newBuilder().setName(UNKNOWN_JOB).build());
assertThrowsã«ã¯ãäºæãããäŸå€ãå®å šã«éæšå¥šã«ããããã®ãããã£ãŒããŒãžã§ã³ããªãããã§ããæé ãã ãšããã£ãŠããŸãããä»ã®èª°ããã®åé¡ãæ±ããŠããŸãããïŒ
@daicoden
assertThrows
ãã¹ããŒå¯èœãªããžã§ã¯ããè¿ããšç¢ºä¿¡ããŠããã®ã§ãä»ã®ãªããžã§ã¯ãã®å Žåãšåãããã«ãããããã£ããã£ããŠã¢ãµãŒã·ã§ã³ãäœæã§ããŸãã
StatusRuntimeException thrown = assertThrows(StatusRuntimeException.class, () -> {
GrpcDispatch.makeRequest(service::enableJob, JobReference.newBuilder().setName(UNKNOWN_JOB).build());
});
assertEquals(Status.INVALID_ARGUMENT, thrown.getStatus());
æãåèã«ãªãã³ã¡ã³ã
@daicoden
assertThrows
ãã¹ããŒå¯èœãªããžã§ã¯ããè¿ããšç¢ºä¿¡ããŠããã®ã§ãä»ã®ãªããžã§ã¯ãã®å Žåãšåãããã«ãããããã£ããã£ããŠã¢ãµãŒã·ã§ã³ãäœæã§ããŸãã