ãã
è©Šã
{{
Assert.TrueïŒfalseã "ãšã©ãŒã¡ãã»ãŒãž"ïŒ;
}
ãã£ããïŒAssertionException eïŒ
{{
Trace.WriteLineïŒ "Ignoreã"ïŒ;
}
Trace.WriteLine("Test Passed");
ãã
Nunit 3.9.0ã§ã¯ããã®ãã¹ãã¯æåããVisual Studioãã¹ããšã¯ã¹ãããŒã©ãŒããå®è¡ãããšããã¹ããšã¯ã¹ãããŒã©ãŒã§åæ ŒãšããŠããŒã¯ãããŸãã Nunit 3.10ã§ã¯ããã¹ããšã¯ã¹ãããŒã©ãŒã®æŠèŠã§ãã¹ãã±ãŒã¹ã倱æãšããŠããŒã¯ãããŠããŸãã æåŸã®ãã¬ãŒã¹è¡ã¯ãäž¡æ¹ã®ããŒãžã§ã³ã§å®è¡ãããŸãã
ããªãã®ãã¹ãã¯ãNUnitãã©ã®ããã«æ©èœãããã«ã€ããŠã®2ã€ã®åœé¡ããã¹ãããŠããŸãã
ããŸããŸãæåã®ã¹ããŒãã¡ã³ãã¯ã»ãšãã©çã§ãããè€æ°ã®ã¢ãµãŒããããã¯å ã«ä¿æãããªãããèŠåãçºè¡ããŸãã 2çªç®ã¯ãŸã£ããçå®ã§ã¯ãããŸããã äŸå€ããã£ãããããŸã§ã«ãé害ã¯ãã§ã«èšé²ãããŠããŸãã ããã¯NUnitã®å éšåäœã®å€æŽã§ããããããã®äŸå€ããã£ããããŠããå Žåã«ã®ã¿èŠ³å¯ã§ããŸãã ç§ã¯ããããåãªãå®è£ ã®å¶ç¶ã§ãããããäœå¹Žãã®éããã®åäœã«äŸåããªãããã«äººã ã«èšã£ãŠããŸããã
ãµã³ãã«ã³ãŒãã¯ãçºçããåé¡ã瀺ãããšã®ã¿ãç®çãšããŠããããšãç解ããŠããŸãã äŸå€ããã£ããããããã«å®éã«äœãããããšããŠããã®ããäŸãæããŠããã ããŸããïŒ ç§ãã¡ã¯ããªããããè¯ã解決çãèŠã€ããã®ãæäŒãããšãã§ãããšç¢ºä¿¡ããŠããŸãã
ãã®ãããªçãéç¥ã§ç§ã«æ»ã£ãŠããŠãããŠããããšãã ç§ã¯ç©äºããŸã äžå®å®ãªãšãã«ã¡ã«ããºã ã䜿çšããŸãã ãã®ããããœãããŠã§ã¢ãæ£ããæ©èœããªãå ŽåããããŸãã ãããã®å Žåãç§ã¯ãããéçºè ã«å ±åããŸãã ãããŸã§ã®éããã®äžå®å®ãªåäœãåé¿ããããã«ãã¹ããæ¡åŒµããŸããã ãããã£ãŠããã®åé¡ã§å€±æããã®ã§ã¯ãªãããã¹ãã«åæ ŒããŸãã
ããã«Warn.IfïŒïŒã¡ãœããã䜿çšããããšããŸããããããã«ããããã¹ããšã¯ã¹ãããŒã©ãŒã§çµæããTestSkippedãã«èšå®ãããŸãã ããã«ããããã¹ãããŸã£ããã¹ããããããªããããã¬ããŒãã®å€±æãçºçããŸãã ãã®ããã代ããã«ã¢ãµãŒã·ã§ã³ãã£ãããå®è£ ããèŠåããã¬ãŒã¹ããããšãéžæããŸãã ç§ã¯ç¥ã£ãŠããŸããæãŸãããããŸããããããã¯ããªãããŸããããŸããã å°ãªããšãæåŸã®æŽæ°ãŸã§ã
ãã®å€æŽãæå³çãªãã®ãã©ããç¥ãããã®ã§ããããã®å Žåã¯å€æŽããå¿ èŠããããŸãã
Warn.If
ã¯æ£åžžã«æ©èœããŸã...ãã¹ããšã¯ã¹ãããŒã©ãŒã§ã¯__except__ã ð¢åé¡ã¯ããã¹ããšã¯ã¹ãããŒã©ãŒãåæ Œãšäžåæ ŒãèªèããŠããããèŠåã¯èªèããŠããªãããšã§ãã èŠåçµæã¹ããŒã¿ã¹ãå®è£
ãããŸã§ãèŠåçµæãç解ã§ãããã®ã«å€æããå¿
èŠããããŸããã FWIWã¯ãçµæã®ç¶æ
ãäžç¢ºå®ã§ããå Žåã«ãåæ§ã®åé¡ããããŸãã
ç§ãã¡ãè¡ã£ãå€æŽã¯æå³çãªãã®ã§ãããé·ãéèšç»ãããŠããŸããã äŸå€ã«ããŸãäŸåããããªãã®ã§ããã¹ããåæ¢ããªãæ¹æ³ã§ãã¢ãµãŒã·ã§ã³ã®çµæïŒæçµçã«ã¯åæ Œãããã®ãå«ãïŒãå ±åããããšæããŸãã ããªãã®ãããªãŠãŒã¶ãŒãžã®åœ±é¿ã軜æžããããã«ããã€ãã®å€æŽãå ããŸããããããã¯è»œæžã®äœå°ããªãããã§ãã
äžå®å®ãªãã¹ããããå Žåãé·å¹Žã®æšæºã¯ããããç¡èŠããããšã§ããã æ®å¿µãªãããå€ãã®ããŒã ã¯ãç¡èŠããããã¹ããç¡èŠãããŸãããã®å Žåãããã¯ããã»ã©è¯ãéžæã§ã¯ãããŸããã èŠåãçå£ã«åãæ¢ããããã«ããŒã ããã¬ãŒãã³ã°ã§ããå ŽåïŒå®éã«ã¯ããšã©ãŒã倱æãšã»ãŒåããããçå£ã«ïŒãèŠåã¹ããŒã¿ã¹ã䜿çšããŠãã¬ãŒã¯ãã¹ã匷調ããããšãã§ããŸãã ãã1ã€ã®å¯èœæ§ã¯ãUntilããããã£ã§Ignoreã䜿çšããããšã§ããããã«ãããç¹å®ã®æ¥ä»ãŸã§ã«ä¿®æ£ãããªãå Žåã倱æã«å€ãããŸãã
ãšããã§ãç§ãããŒã ãæå°ãããšããç§ã¯éåžžãç¡èŠããããã¹ãã®Big VisibleDisplayãç¶ç¶çã«æŽæ°ããŠããŸãã ã»ãšãã©ã®ããŒã ã§ã¯ã誰ãäœã®è²¬ä»»è ãã誰ããç¥ã£ãŠããã®ã§ãäžå®å®ãªãã¹ãã®è²¬ä»»è ãå®éã«åŒã³åºãå¿ èŠã¯ãããŸããã 誰ããåé¡ãèŠããšãä¿®æ£ãããåŸåããããŸãã
@svanimpelenã¯ãRetry
å±æ§ã䜿çšããŠã¿ãŸãããïŒ ããã¯ããªããããããééãããããã«ããããæ°åå®è¡ããããšãå¯èœã«ããŸãã
ãšã¯ã¹ãããŒã©ãŒã§ãã¹ããã¹ããããããçµæãšãªãèŠåã«ã€ããŠã¯ãçŸåšãµããŒããããŠããMSTestã®éãããæ°ãããå€ãã®çµæç¶æ ãæå®ã§ããããã«ããããšã«ã€ããŠãããžã¥ã¢ã«ã¹ã¿ãžãªããŒã ãšè©±ãåããŸããã 圌ãã¯ãã®ã¢ã€ãã¢ãæ°ã«å ¥ã£ãŠããã®ã§ãå°æ¥çã«ã¯æ¹åãèŠãããããšãé¡ã£ãŠããŸãã ãããŸã§ã¯ãã¹ãããããŠèŠããå¿ èŠããããŸãã ãšã¯ãããã¹ããããããšèŠåã衚瀺ãããŸãã èŠåãéåžžã«ããããããããããšæããŸãð
éåžžã«å€ãã®ã¡ãœãããææžåãããŠãããããAPIã¯å€±ææã«AssertionExceptionãã¹ããŒããŸãã
ãã®ããã¥ã¡ã³ããšNUnitã®é·å¹Žã®åäœã¯ã3.10ã®é倧ãªå€æŽãæ§æããŸãããïŒ
äœãã足ããªãå Žåãé€ããŠãå°ãªããšãä»ã¯æ£ãããªãããã¥ã¡ã³ããåé€ããå¿
èŠããããŸãã
è€æ°ã®ã¢ãµãŒã·ã§ã³ãããã¯ãå°å
¥ãããããããã¥ã¡ã³ãã誀解ãæãå¯èœæ§ãããããšã«åæããŸãã ãšã¯ããããã®å Žåã¯AssertionException
ããŸã ã¹ããŒãããŠããŸãããéãã¯ãäŸå€ããã£ãããããã«ããããããããã¹ããVisualStudioã§å€±æãšããŠå ±åãããããã«ãªã£ãããšã§ãã ç§ã¯ãããé倧ãªå€åãšã¯èŠãŠããŸããã ãŠãŒã¶ãŒã¯ãããŸããŸæ©èœããææžåãããŠããªãåäœã«äŸåããŠããŸããã ç§ã«ãšã£ãŠãããã¯ããŠãŒã¶ãŒãããŸããŸãã¹ããã¢ã«ãã¡ãããé ã«å®è¡ããŠãã¹ããé åºä»ããŠãããšããäºå®ã«äŸåããŠããã®ãšåãã§ãã
ããããããã¥ã¡ã³ããæŽæ°ããå¿ èŠããããŸãã äŸå€ã®ã¹ããŒã«é¢ããæ å ±ãåé€ãã代ããã«ã誀ã£ãæ¡ä»¶ããã¹ãã«å€±æããããšã瀺ãããšãã§ããŸãã ããã³/ãŸãã¯ãäŸå€ããã«ãã¢ãµãŒããããã¯ã§ã¹ããŒãããªããšèšãããšãã§ããŸããïŒ å人çã«ã¯ãã¹ããŒãããäŸå€ã®ã¿ã€ãã¯å éšã®è©³çŽ°ã ãšæãã®ã§ãæåã®ãªãã·ã§ã³ã奜ã¿ãŸãã
ããã ãšæããŸãã äŸå€ã®äœ¿çšãã©ããã«ææžåãããå Žåãããã¯å éšã®wikiã»ã¯ã·ã§ã³ã«ããå¯èœæ§ããããŸãã
ã¡ãœããã®ããã¥ã¡ã³ãã«äŸå€ãã¹ããŒããããšèšèŒãããŠããå ŽåãäŸå€ã¯åŒã³åºããµã€ãã§ãã£ããã§ãããšæ確ã«èšã£ãŠãããšæããŸãã CïŒã¯äŸå€ããã§ãã¯ããŠããããXMLããã¥ã¡ã³ãã¯ã¡ãœããã³ã³ãã©ã¯ãã®ãã®éšåãã©ã®ããã«äŒéããŠãããã瀺ããŠããŸãã ãthrowsXããšããèšèã¯åžžã«ã¡ãœãããããããã£ããããªãããšãæå³ããŠããããšãç§ãç¥ã£ãŠããéããç§ã¯ãŸã ä»ã®äººããããã©ã®ããã«åã£ãŠããã®ãå°ãå¿é ããŠããŸãã ãã¶ããå®å šã®ããã«ãŠã£ãã®é倧ãªå€æŽã¡ã¢ã§ããïŒ
XMLããã¥ã¡ã³ãããAssertionExceptionãžã®ãã¹ãŠã®åç §ãåé€ããAssertionExceptionã䜿çšããªãããã«èŠåããwikiããŒãžãäœæãããšããã¢ã€ãã¢ã奜ãã§ãã
ð AssertionException
ãã£ããããããšãåžžã«ãã°ã§ããå Žåããã®ã¿ã€ããå
éšã«ããããšãæ€èšã§ããŸããïŒ
@ jnm2ã
XMLããã¥ã¡ã³ãã®éèŠæ§ã«ã€ããŠã¯åæããŸãããå®éã®ãšããããããã®ããã¥ã¡ã³ãã¯ããããŸã§å¥çŽã®äžéšãäŒéããŠããæ¹æ³ã§ã¯ãããŸããã ç§ã¯å®éã«ããªãããããææ¡ããæåã®äººãããããªããšæããŸãããããŠããã¯è¯ãèãã ãšæããŸãã
ãããããã®ããã«èãå§ãããšãå€ãã®èª€ã£ãã³ã¡ã³ããå€æŽããå¿ èŠãããããšãèªèããŠããå¿ èŠããããšæããŸãã ãããã®ããã¥ã¡ã³ãã®å€æŽã®ãããããé倧ãªå€æŽãšããŠæ±ãããšã¯ã§ããªããšæããŸãã ã±ãŒã¹ãã€ã±ãŒã¹ã§ãæ ¹æ¬çãªè¡åã®å€åãç Žå£çãªãã®ãšããŠåççã«æ±ãããšãã§ããŸãããããã¯ç°ãªããŸãã ããã¥ã¡ã³ãã®å€æŽãå£ããŠã¯ãããŸããã
ããã¯ãé倧ãªå€æŽã®ãªã¹ãã«äœãå«ããã¹ãããšããåé¡ãæèµ·ããŸãã ããªãã®éå»ã®ã³ã¡ã³ããç解ããŠããã°ããŠãŒã¶ãŒãå·ã€ããå¯èœæ§ã®ãããã®ã¯äœã§ãææžåããããšæãåŸåããããšæããŸãã å€ãã®ãŠãŒã¶ãŒãå£ããšæãããããšãææžåããããšã奜ã¿ãŸãã
ãããç§ãéããã©ã®ããã«èŠãŠãããã§ã-ä»ã®äººã¯åæããªããããããŸãã...__å£ãããããããªããã¹ãŠã®ãã®__ãææžåããããšã¯ç§ã«ãšã£ãŠCYAã®ãããªã«ãããããŸãã ãã¹ãŠãææžåãããšã次ã®ããã«èšãããšãã§ããŸã...ãã»ããç§ãã¡ã¯ã«ããŒãããŠããŸããã éèŠãšæããããã®ã ããææžåãããšãééã£ãŠè¬çœªããªããã°ãªããªããªã¹ã¯ããããŸãããå¹³åçãªãŠãŒã¶ãŒã¯äžé£ã®å€æŽãã¯ããã«ç解ãããããªããŸãã ç§ã¯åŸè ã奜ãã§ãã
ã¢ãµãŒã·ã§ã³äŸå€ããã£ããããŠãå®å šãªå ŽåããããŸãã ããšãã°ãTestExecutionContextã䜿çšããã«çŽæ¥ãã¹ããå®è¡ããŠãå®å šã§ããããã«ããã°ããåã«å€æŽãå ããŸããã äŸå€ãå éšã«ãããšããããç ŽããŸãã å®éãç§ã¯ãããå£ããŠå¹žãã§ããããããŒã ã¯ç§ãã¡ããã¹ãã§ã¯ãªãããšã«åæããã®ã§ãç§ã¯ãããä¿®æ£ããŸããã ããªãã¯ãã ããªããäœãå£ããŠãæ§ããªããšæã£ãŠãããã決ããå¿ èŠããããŸãã ãã®ä¿®æ£ã¯ãã¡ãœãããåŒã³åºãã³ãŒãã§ã¯ãªãããã¹ãèªäœã®å éšã§äŸå€ããã£ããããããšãæ±ãçŸåšã®åé¡ã__not__åŠçããŸããã
ãã¹ãã§AssertionExceptionããã£ããããããšã¯ãç§ãå€å žçãªãåãããšåŒã¶ãã®ã§ãã ããããééã£ãŠããŸãããç¹å®ã®ã±ãŒã¹ã調ã¹ãŠç¥ãå¿ èŠããããŸãã ãNUnitã®å éšã«é¢ãã詳现ãªç¥èããªãéããAssertionExceptionã®ãã£ããã¯ãšã©ãŒã§ããå¯èœæ§ãé«ãã§ããé©åãªåäœãä¿èšŒããããã«ããã¹ãã®çµæãå€æŽããããšãããããããããšãå®è¡ããåŸã«äŸå€ãåã¹ããŒããå¿ èŠããããŸãããããšã" ããããç§ã¯ãŸã ãã®ãããªæ å ±ãXMLããã¥ã¡ã³ããäžè¬ãŠãŒã¶ãŒããã¥ã¡ã³ãã«å±ããŠãããšã¯æããŸããã å éšã»ã¯ã·ã§ã³ã«ããŒãžãšããŠé 眮ããŸãã
ãšããã§ãç§ã®éå»ã®çµéšã§ã¯ãäœããææžåããããã䜿çšããªãããã«äººã ã«æ瀺ãããšã䜿çšéãå¢å ããŸãã ð
è¯ãç¹ãããããšãïŒ éšåçã«ã¯CYAã®èŠ³ç¹ããèããŠãããšæããŸãã ãã1ã€ã®èŠçŽ ããããŸããããã¯ãã©ã€ãã©ãªã®å©çšè ãšããŠãèªåã®ã³ãŒãã§æªãä»®å®ãæ¢ãããšãã§ããããã«ããã¹ãŠã®é倧ãªå€æŽã«ã€ããŠæããŠããã ããã°å¹žãã§ãã ç¹ã«ãã³ã³ãã€ã©ãæ°ä»ããªããã®ãããªå€æŽã®å Žåã ãããããé¡ãããŸãã®ã§ãããçšåºŠãŠãŒã¶ãŒã«æ圱ããŸãã
ããã¥ã¡ã³ãã®ä¿®æ£ã远跡ããããã«æ°ããåé¡ãéå§ããå¿ èŠããããŸããïŒ
ãªãæ°ããã®ã§ããïŒ
ã¿ã€ãã«ã¯ãä¿®æ£ããã®ã§ã¯ãªããåçæžã¿ã®è³ªåãšããŠéãããã®ã®ããã«èŠããŸãã éåžžãã¿ã€ãã«ãå€æŽãããã®åé¡ã䜿çšããŠããã¥ã¡ã³ãã®å€æŽã远跡ããŸããïŒ
ç§ãéåžžè¡ã£ãŠããããšã¯ãåé¡ã確èªããŠåé¡ããããšã§ã...ãã®å Žåã¯ããã¥ã¡ã³ãã®åé¡ã§ãã 確ãã«ãç§ãã¡ã¯æåã«èãããããã°ãšããŠããã«ã€ããŠè°è«ããã®ã«æ¬åœã«é·ãæéãè²»ãããŸããã ããã¯ãããžã§ã¯ã管çã®è³ªåã§ãããå®éã«ã¯ç§ã®ç¯å²å€ã§ãã
ç§ãèšã£ãŠããã®ã¯ãè«ççã§äžè²«æ§ã®ããããšãããããšã§ãã ðãã°ã§ã¯ãªãã®ã§ãããéããããšã¯ãªãã·ã§ã³ã§ãã ããããããã¯èŠæ ã解決çããåãé¢ããŸãã ããã¥ã¡ã³ãã®ãã°ãšããŠååé¡ããå Žåã«ãã£ãŠã¯ã¿ã€ãã«ãç·šéãããšãã«èª¬æã³ã¡ã³ããæžããšãèŠæ ã®ãã解決çãç¶æãããŸãã ãããã«ãããDoneã®åé¡ã®ã¿ã€ãã«ã¯ãªãªãŒã¹ããŒãã«èšèŒãããŠããã®ã§ãäœãèµ·ãã£ãã®ããè¡šçŸããå¿ èŠããããŸãã
äŸå€ããã£ããããããã«å®éã«äœãããããšããŠããã®ããäŸãæããŠããã ããŸããïŒ ç§ãã¡ã¯ããªããããè¯ã解決çãèŠã€ããã®ãæäŒãããšãã§ãããšç¢ºä¿¡ããŠããŸãã
3.10ã«ã¢ããã°ã¬ãŒãããåŸããã¹ãã倱æãå§ãããããçŸåšåãåé¡ã«çŽé¢ããŠããŸãã ä»ããã«ç§ã®åé¡ããããŸãïŒ
ã«ã¹ã¿ã ãã¹ãã¢ãµãŒã·ã§ã³ã¡ãœããããããŸãã ãããã¯å
éšçã«NUnit.AssertãåŒã³åºããŸãã ãããã®ã¢ãµãŒã·ã§ã³ã¡ãœããããã¹ãããŠã倱æãããšäºæ³ããããšãã«å®éã«å€±æããããšã確èªããŸãã
çŸåšãç§ã®ãã¹ãã¯AssertionException
ããã£ããããŠãã«ã¹ã¿ã ã¢ãµãŒã·ã§ã³ã¡ãœããããã¹ãã®å€±æãåŒãèµ·ããããšã確èªããŠããŸãããã¢ããã°ã¬ãŒãåŸãäžèšã®çç±ã«ããããããã®ãã¹ãã¯ãã¹ãŠå€±æãå§ããŸãã
3.10ã§ãããããã¹ãããããã®æšå¥šãããæ¹æ³ã¯äœã§ããïŒ
ããããšãã
æãç°¡åãªã¢ãããŒãã¯ãAssert.Throwsã䜿çšããŠãèªåã§è¡ãã®ã§ã¯ãªããäŸå€ããã£ããããããšã§ãã Assert.Throwsã¯ãNUnitã®å éšãç解ããé害ãå ±åãããªãããã«ããŸãã
å æ¥ãéç¥ã§ãããèŠãŠãããŸãèããŠããŸããã§ããã ãã ããããžãã¯å ã§ãAssert.Thatããå®è¡ããç§ã®ã©ã€ãã©ãªãããžã§ã¯ããæŽæ°ããŸãïŒããã¯ãã¹ããã«ããŒãã¬ãŒã ã¯ãŒã¯ã§ããç¹ã«ãEFã³ã³ããã¹ããšãšã³ãã£ãã£ãæåã§ã³ãŒãã£ã³ã°ãã察å¿ããããŒã¿ããŒã¹ãã³ãŒãã£ã³ã°ãããšãã«EFã®æ°žç¶æ§ããã¹ãããç°¡åãªæ¹æ³ãæäŸããŸããæäœæ¥ã§ã®ç§»è¡ïŒãŸãã¯FluentMigratorã®ãããªãã®ã䜿çšïŒ-ã€ãŸããåŒã³åºãå ã«ä»£ãã£ãŠã¢ãµãŒã·ã§ã³ãå®è¡ããããšã«ãªã£ãŠããŸãïŒããã¹ãã倱æããã¯ãã®å Žæã§å€±æããããã«ãªããŸãã-ç¹ã«1ã€ã®ãã¹ãã¯ã¢ãµãŒã·ã§ã³ã§ãç¹å®ã®æ¡ä»¶ã§ãã¹ãã倱æããã¯ãã§ãããããã£ãããã¯éåžžã©ããæ©èœããªããªã£ãããããããã®ãã¹ãã¯å®éã«åæ ŒããŠãããã®ã®ã倱æãšããŠå ±åãããŸãã
ãããã£ãŠãé©åãªNUnitã¢ãµãŒã·ã§ã³ãã¹ããŒã§ããªããããŠãŒã¶ãŒã®é¢åãªã¿ã¹ã¯ãå®è¡ããŠãã¹ãéçºãè¿
éåããããšãç®çãšããã©ã€ãã©ãªã³ãŒãã§Assert.That
ã䜿çšã§ããªããšæããŸããïŒ
ç§ã¯ãäŸå€ããŠãŒã¶ãŒã«ãã£ãŠæ¶è²»ãããªãå ŽåããŠãŒã¶ãŒãã¹ããŒã§ããããã«ãã¹ãã§ã¯ãªããšãã以åã®å£°æã«åæããŸãã ãã ããã³ã³ã·ã¥ãŒããŒçšã«Assert.That
ã³ãŒããé
眮ããã³ãŒããæ³å®ã©ããã«å€±æããããã«å€±æããããšããã¹ããããšããåé¡ã¯è§£æ±ºãããŸãããnunitã¢ãµãŒã·ã§ã³ã§å€±æããŸãã
ãããããçµæAPIã®ããã€ãã補ååããå¿ èŠããããŸããïŒ
@fluffynutsç§ãããªããæ£ããç解ããŠããã°ã catch
å¥ã¯ããŠãŒã¶ãŒã©ã€ãã©ãªã®ã³ãŒãã§ã¯ãªãããã¹ãã³ãŒãã«ãããŸãã ïŒãŠãŒã¶ãŒã©ã€ãã©ãªã«ãããå Žåã¯ãããã«ã€ããŠè©±ãããšãã§ããŸãããåé¡ã¯å°ãç°ãªããŸããïŒ
ãã¡ãããNUnitã«ã¯ããèªäœã®ãã¹ããããããããã®å€æŽãè¡ããããšãã«ãŸã£ããåãæœåšçãªåé¡ãçºçããŸããã åœç¶ãç§ãã¡ã¯ç¬èªã®ãã¹ããå€æŽããŠãåæ Œãç¶ããŸããã ããªãã¯åãããšãããããšãã§ããŸãã
é²è¡ã®ç¬¬äžç·ã¯Assert.Throws
ã§ãã 倱æåäœããã¹ãããã»ãšãã©ã®å Žåã try / catch(AssertionException)
ãAssert.Throws<AssertionException>
çŽæ¥çœ®ãæããããšãã§ããŸãã å
éšçã«Assert.Throws
ã¯ã䜿ãæšãŠã®åé¢ãããTestExecutionContext
Assert.Throws
äœæãããããå®éã®ãã¹ãçµæã¯ããã¹ãããŠãããšã©ãŒã«ãã£ãŠæ±æãããŸããã
å Žåã«ãã£ãŠã¯ãç¬èªã®åé¢ãããã³ã³ããã¹ããäœæããå¿
èŠããããŸãã Assert.Throws
ã³ãŒãã調ã¹ãããšã§ããã®æ¹æ³ã確èªã§ããŸãã
ãã ããNUnitç¬èªã®é害ãã¹ãã®å€ãã¯ãå®éã«ã¯ç°ãªãã¢ãããŒãã䜿çšããŠããŸãã ç¬èªã®ãã¹ãããã°ã©ã ã«ãã£ãŠå®è¡ããããã¹ããå«ãå¥ã®ã¢ã»ã³ããªããããŸãã çµæãååŸããŠèª¿ã¹ãããšãã§ããŸãã ããã¯ããå€ãã®äœæ¥ã§ãããNUnitã«é¢ããå®è£ ã®è©³çŽ°ããã¹ãã«å ¥ããããªãããã«ããŸãã ãããè¡ãã»ãšãã©ã®ã¡ãœããã¯ããã¹ããŠãŒãã£ãªãã£ã¢ã»ã³ããªã«ãããŸãã @ jnm2ãèšåããŠããã®ã¯ããã ãšæããŸãã
ãäžæãªç¹ãããããŸããããæçš¿ãããããªãã©ã€ã³ã§ãé£çµ¡ãã ããã
æ å ±ãããããšãã ã¯ããã¢ãµãŒã·ã§ã³ã¯ãã¹ãã³ãŒãå ã«å«ãŸããŠããŸãã Assert.Throwsã¯éåžžãã®ããªãã¯ãå®è¡ããŸãããåé¡ã®ç¹å®ã®ãã¹ãã¯ãããŒã¿ããŒã¹ããååŸããæ¥æå€ã®ãã¹ããèš±å¯ãããã«ã¿ããäœããããã©ã€ãã©ãªã³ãŒããå®è¡ããŸãã ã»ãšãã©ã®å Žåãããã§localdbã«çºçããããªããã¯1ããªç§ã§ãããããªããã倧ãããªãããšããããŸãããã®ãã¹ãã¯ããæã ãçºçããããšãè¡šæããããšãç®çãšããŠããŸãã ãã®ãããçŸæç¹ã§ã¯ãã³ãŒãã4ã€ã®äžŠåã¹ã¬ããã§10åå®è¡ããå°ãªããšã1ã€ã®å€±æãäºæ³ãããŸãã Assert.Throwsã¯ãæ®å¿µãªããããã®å Žåã¯æ±ºå®è«çããããããnunitäŸå€ïŒãŸãã¯ã©ã€ãã©ãªã³ãŒãå ã®AssertïŒã®äœ¿çšãåæ¢ããããçããã䜿çšããfuãåŠç¿ããå¿ èŠããããŸãã ãã€ã³ã¿ãããã ããã°å¹žãã§ããå¿ èŠã«å¿ããŠããªãã©ã€ã³ã§å®è¡ã§ããŸãã
ãããšãç§ãèŠã€ããŠããAsyncVoidVerificationScopeã®ã¡ãã»ãŒãžãã³ããã¹ãã®å€±æã¯ã@ fluffynutsãæ±ããŠããåé¡ãšæ°ã¥ããŸããã å®éã«ã¯ã[ã¢ã»ã³ããªïŒRestoreSynchronizationContext] ITestActionã§ã¯ãªããNUnit3.10ã®ã¢ããã°ã¬ãŒããåå ã§ãã äžåºŠã«è€æ°ã®ããšãããŠããéãããããç¡èŠããæš©å©ãç§ã«æäŸããŸãã ïŒNS
ãšã«ãããç§ã¯äœãããããã®ããã«èŠããŸãããç§ã®äžã§ãããªã²ãŒãã®åŒã³åºããã©ããã§using (new TestExecutionContext.IsolatedContext())
ãšåãããã«Assert.Throws
ãŸããã
ãã ãã Assert.Throws
ãšAssert.ThrowsAsync
ã¯ãéåæããªã²ãŒããåŒã³åºãåã«åé¢ãããã³ã³ããã¹ãã確ç«ããŸããã ã©ãããŠãããªã®ïŒ
@fluffynutsãã£ãšåã«ãç§ãæåã«Assert.Catch
æžãããšããããã¯åã«äŸå€ããã£ããããã ãã§ãäŸå€ãã¹ããŒãããªããŠããšã©ãŒãçæããŸããã§ããã æ®å¿µãªãããããã¯å€æŽããã Assert.Throws
çžåœããããã¥ãŒãã©ã«ãã¯ãªããªããŸããã ãã ãã1ã€æžãããšã¯ã§ããŸãã ããã¯ã Assert.Throws
ã®ã³ãŒãã«åºã¥ããã¹ããããŠããªãããŒãžã§ã³ã§ãã åæã³ãŒãã®ã¿ãåŠçããŸããã Assert.Throws
è¿œå ã³ãŒãã䜿çšããŠãéåæçšã«ç°¡åã«æ¡åŒµã§ããŸãã
`` `CïŒ
public static void Exception SafelyCatchAnNUnitExceptionïŒTestDelegate codeïŒ
{{
äŸå€caughtException = null;
using (new TestExecutionContext.IsolatedContext())
{
try
{
code();
}
catch (Exception ex)
{
caughtException = ex;
}
return caughtException;
}
}
`` `
ãã®ã¡ãœããã¯ãã¹ããŒãããäŸå€ãè¿ããNUnitã®assertã¡ãœããã«ãã£ãŠæ®ããããšã©ãŒã®æ®ããã¯ãªãŒã³ã¢ããããŸãã äŸå€ãã¹ããŒãããªãå Žåã¯ãnullãè¿ããŸãã
ã³ãŒãã®äžäœã¬ãã«ã§IsolatedContext()
ã䜿çšããŠãå®éã®ãã¹ãçµæãååŸããããšãã§ããŸãã ããã«ãããäŸå€ãåç
§ããã«ããã¹ãçµæã®ã¬ãã«ã§å®å
šã«ãã¹ãã§ããŸãã ãã®ã¿ã€ãã®ãã¹ãçšã®ã©ã€ãã©ãªãäœæããããšãèããŸãããããã¯ãNUnitãçŸåšç¬èªã®ãã¹ããå®è¡ããæ¹æ³ãããåªããŠãããšæããŸãã
æãåèã«ãªãã³ã¡ã³ã
@fluffynutsãã£ãšåã«ãç§ãæåã«
Assert.Catch
æžãããšããããã¯åã«äŸå€ããã£ããããã ãã§ãäŸå€ãã¹ããŒãããªããŠããšã©ãŒãçæããŸããã§ããã æ®å¿µãªãããããã¯å€æŽãããAssert.Throws
çžåœããããã¥ãŒãã©ã«ãã¯ãªããªããŸããã ãã ãã1ã€æžãããšã¯ã§ããŸãã ããã¯ãAssert.Throws
ã®ã³ãŒãã«åºã¥ããã¹ããããŠããªãããŒãžã§ã³ã§ãã åæã³ãŒãã®ã¿ãåŠçããŸãããAssert.Throws
è¿œå ã³ãŒãã䜿çšããŠãéåæçšã«ç°¡åã«æ¡åŒµã§ããŸãã`` `CïŒ
public static void Exception SafelyCatchAnNUnitExceptionïŒTestDelegate codeïŒ
{{
äŸå€caughtException = null;
}
`` `
ãã®ã¡ãœããã¯ãã¹ããŒãããäŸå€ãè¿ããNUnitã®assertã¡ãœããã«ãã£ãŠæ®ããããšã©ãŒã®æ®ããã¯ãªãŒã³ã¢ããããŸãã äŸå€ãã¹ããŒãããªãå Žåã¯ãnullãè¿ããŸãã
ã³ãŒãã®äžäœã¬ãã«ã§
IsolatedContext()
ã䜿çšããŠãå®éã®ãã¹ãçµæãååŸããããšãã§ããŸãã ããã«ãããäŸå€ãåç §ããã«ããã¹ãçµæã®ã¬ãã«ã§å®å šã«ãã¹ãã§ããŸãã ãã®ã¿ã€ãã®ãã¹ãçšã®ã©ã€ãã©ãªãäœæããããšãèããŸãããããã¯ãNUnitãçŸåšç¬èªã®ãã¹ããå®è¡ããæ¹æ³ãããåªããŠãããšæããŸãã