ã¿ããªããã«ã¡ã¯ã
ããã¯è³ªåã§ãã
ãã¹ãŠã®ãã¹ãã±ãŒã¹ãšããããã®ã«ããŽãªã®ãªã¹ããååŸããããšããŠããŸãã
çŸåšã次ã®3ã€ã®ãªãã·ã§ã³ããããŸãã
1ïŒãªãã¬ã¯ã·ã§ã³ïŒãã¹ãŠã®ã¡ãœããã調ã¹ãŠãTestAttribute / TestCaseAttribute / TestFixtureã確èªããŸã...
2ïŒã©ã³ããŒã䜿çšããŠãrunner.Exploreã§xmlãæœåºããxmlã解æããŸãã
3ïŒNUnitããã§ã«è¡ã£ãŠããããšã䜿çšããŸãã
ç§ã®è³ªåã¯åŸè
ãäžå¿ã«å±éããŠããŸãïŒ
åãã¹ãã±ãŒã¹ã®ã«ããŽãªãããã©ããåãããã«ã¯ã©ãããã°ããã§ããïŒ ïŒã«ããŽãªãæœè±¡ã¯ã©ã¹ãŸãã¯ã¯ã©ã¹å
šäœã«é
眮ãããå ŽåïŒ
çæ³çã«ã¯ãNUnitã§ãã§ã«äœ¿çšãããŠãããã®ãåå©çšããŠããã¹ããªã¹ããæœåºããããšæããŸãã
ã©ãããèªã¿å§ãããã«ã€ããŠã®ææ¡ã¯ãããŸããïŒ
ãããããé¡ãããŸãã
ãµã€ã¢ã³
ããã
ç§ã¯æè¿ãåãããšãéæããããšããŠãã°ããæéãè²»ãããçŸåšã®è§£æ±ºçã«èœã¡çãåã«ããã€ãã®ããšãè©Šã¿ãŸããïŒããã¯ããªãã«ãšã£ãŠããŸããããããããªãããããŸããããªããããããŸããïŒã ããŸããŸãªnunit3ãã¹ããããžã§ã¯ãã§æ©èœããããªãæ±çšçãªãœãªã¥ãŒã·ã§ã³ãå¿
èŠã§ããïŒäžéšã¯ãããããããã¬ãŒã ã¯ãŒã¯ã察象ãšããäžéšã¯ããããããã³ã¢ã察象ãšããŠããŸãïŒã æåã«ããªãã¬ã¯ã·ã§ã³ãšã¢ã»ã³ããªã®ããŒããè©Šãã ITestBuilder
ã€ã³ã¿ãŒãã§ã€ã¹ããBuildFrom()
ãåŒã³åºããŸããã ãã¹ãŠã®ãããžã§ã¯ãã§ã¯ãããŸããããã»ãšãã©ã®ãããžã§ã¯ãã§æ©èœããŸãããå€ãã®äœæ¥ã®ããã«æããã®ã§ãNUnitã«æéã®ãããäœæ¥ãä»»ããããšæããŸãã
次ã«ã NUnitãšã³ãžã³APIãè©ŠãïŒäŸã衚瀺ããã«ã¯å°ãäžã«ã¹ã¯ããŒã«ã
çµå±ãèªåã®ãœãªã¥ãŒã·ã§ã³ãä»ã®åäœãã¹ããã¬ãŒã ã¯ãŒã¯ã䜿çšãããã¹ããœãªã¥ãŒã·ã§ã³ã§ãæ©èœããã®ã§ããã°ãããšæããnunit3testadapterãšäžç·ã«äœ¿çšããã«ã¹ã¿ã vstestãã¹ããã¬ãŒãäœæããŸããã ã«ã¹ã¿ã ãã¬ãŒã¯ã DiscoveredTests
ããã³DiscoveryComplete
ã€ãã³ãã®ã€ãã³ããã³ãã©ãŒãå®çŸ©ããŸãã ãã¬ãŒã¯ãæ€åºããããã¹ãã±ãŒã¹ãªããžã§ã¯ãã®ãªã¹ããjsonãã¡ã€ã«ã«ã·ãªã¢ã«åãããããä»ã®å Žæã§åŠçããŸãã ãã¬ãŒã䜿çšããã«ã¯ãvstestã³ã³ãœãŒã«ãå®è¡ãããã¹ãæ€åºã®ã¿ãå®è¡ãããããã«/ListTests
ã¹ã€ãããæäŸããã«ã¹ã¿ã ãã¬ãŒã䜿çšããå¥ã®ãªãã·ã§ã³ïŒ vstest.console.exe <testassemblypath> /ListTests /Logger:<customloggername> -- RunConfiguration.TestAdaptersPaths=<directoryofcustomlogger>;<directoryofnunitadapter>
ïŒããã«ã®åŸã«ã¹ããŒã¹ãããããšã«æ³šæããŠãã ããïŒãã€ãã³ïŒã ãã ãžã®åç
§ãè¿œå Microsoft.TestPlatform.TranslationLayer
ããã¯ããªãã«vstestãªããžã§ã¯ãã¢ãã«ãšã®äž¡æ¹ã«ã¢ã¯ã»ã¹ã§ããŸãã®ã§ã JsonDataSerializerãçºèŠããããã¹ãã±ãŒã¹ã®ããŒã¿ããã·ãªã¢ã©ã€ãº/ã·ãªã¢ã©ã€ãºã®ããã«ã ãã¹ãæ€åºã€ãã³ããå°å
¥ãããã©ãããã©ãŒã ã®ããŒãžã§ã³ãšäºææ§ããããããå°ãªããšãv16ã®translationlayerããã±ãŒãžãå¿
èŠã ãšæããŸãã nugetããvstestãããŠã³ããŒãã§ããŸãããŸãã¯ãVisual Studio 2019ãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ããã§ã«ããŠã³ããŒããããŠããŸãã
ãã1ã€ã®æ¹æ³ã¯ãvstest.console.exeãšNUnit3Adapterã䜿çšãã DumpXmlTestDiscoveryã¢ããã¿ãŒèšå®ãæå¹ã«ããããšã§ãã ãã ãããã³ãã¯èšºææ
å ±ã§ãããããå®éã«ã¯ãããªãã¯APIã§ã¯ãªããå€æŽãããå¯èœæ§ããããšæããŸãã ç§ã¯è©ŠããŠããŸããããäžèšãšåãvstest.console.exeã³ãã³ãã©ã€ã³ããªãã¯ã䜿çšããŠãã³ãã³ãã©ã€ã³ããdumpxmltestdiscoveryãªãã·ã§ã³ãæå¹ã«ã§ããã¯ãã§ãïŒ vstest.console.exe <testassemblypath> /ListTests -- NUnit.DumpXmlTestDiscovery=True
ã
ãã®è§£æ±ºçã¯ããªãã®ããŒãºã«å¯ŸããŠå°ãäžãè¡ããããããŸããããããã¯çµå±å€ãã®ã³ãŒãã§ã¯ãããŸããã§ããã æ¶è²»è ã¯vstestããŒãžã§ã³16以éã䜿çšããŠããå¿ èŠããããŸãã é ã®ãŠã£ãºãããã¯æãåºããŸããããã«ããŽãªãŒã¯ããã©ãããã ã£ããšæããŸãã
åç §ïŒ
[ç·šé]䜿çšäŸãæŽæ°ããŸãã-ééã£ãruncoâânfigurationããããã£ãå«ããŸãã
ãã¹ãåºåèªäœïŒïŒïŒã®DumpXmlTestDiscoveryããã®Xmlã¯ãNUnitãšã³ãžã³ããçŽæ¥ååŸãããããèªäœã§å€æŽãããå¯èœæ§ã¯ã»ãšãã©ãããŸããã ããã¯ãã¢ããã¿ãŒã䜿çšããã®ãšåãXmlæ å ±ã§ãããããå€æŽãå ãããšãæ°ããã¢ããã¿ãŒãå¿ èŠã«ãªããäžäœäºææ§ã倱ãããããšã«ãªããŸããããã¯ãéåžžã«æ³šæãå¿ èŠã§ãã ãã ãããã¡ã€ã«èªäœã¯å±é
ããã«ã¡ã¯@ shack05ãš@OsirisTerje ã
ããªãã®æŽå¯ã«æè¬ããŸãïŒ
ãã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ãèŠçŽããã«ã¯ïŒ
1ïŒãªãã¬ã¯ã·ã§ã³ïŒ
ã¢ã»ã³ããªx = Assembly.GetExecutingAssemblyïŒïŒ;
var classes = x.GetExportedTypesïŒïŒ;
foreach (System.Type type in classes)
{
MethodInfo[] methods = type.GetMethods();
foreach (MethodInfo methodInfo in methods)
{
if ((methodInfo.GetCustomAttributes(typeof(TestAttribute), true).Length == 1)
..ã
2ïŒNUnitãšã³ãžã³APIïŒ
ITestEngineãšã³ãžã³= TestEngineActivator.CreateInstanceïŒïŒ;
// Create a simple test package - one assembly, no special settings
TestPackage package = new NUnit.Engine.TestPackage(Assembly.GetExecutingAssembly().Location);
// Get a runner for the test package
ITestRunner runner = engine.GetRunner(package);
var tree = runner.Explore(NUnit.Engine.TestFilter.Empty);//new NUnit.Engine.TestFilter("*"));
3ïŒã³ã³ãœãŒã«ïŒNUnitãŸãã¯vstestã®ããããïŒïŒ
nunit3-console.exe Tests.dll --exploreïŒ "nunit3-test.xml" --where = "{testFilter}"
ç§ã¯ãããã1ãš3ãæ··ããããšã«ãªãã§ãããã
æãåèã«ãªãã³ã¡ã³ã
ããã
ç§ã¯æè¿ãåãããšãéæããããšããŠãã°ããæéãè²»ãããçŸåšã®è§£æ±ºçã«èœã¡çãåã«ããã€ãã®ããšãè©Šã¿ãŸããïŒããã¯ããªãã«ãšã£ãŠããŸããããããããªãããããŸããããªããããããŸããïŒã ããŸããŸãªnunit3ãã¹ããããžã§ã¯ãã§æ©èœããããªãæ±çšçãªãœãªã¥ãŒã·ã§ã³ãå¿ èŠã§ããïŒäžéšã¯ãããããããã¬ãŒã ã¯ãŒã¯ã察象ãšããäžéšã¯ããããããã³ã¢ã察象ãšããŠããŸãïŒã æåã«ããªãã¬ã¯ã·ã§ã³ãšã¢ã»ã³ããªã®ããŒããè©Šãã
ITestBuilder
ã€ã³ã¿ãŒãã§ã€ã¹ããBuildFrom()
ãåŒã³åºããŸããã ãã¹ãŠã®ãããžã§ã¯ãã§ã¯ãããŸããããã»ãšãã©ã®ãããžã§ã¯ãã§æ©èœããŸãããå€ãã®äœæ¥ã®ããã«æããã®ã§ãNUnitã«æéã®ãããäœæ¥ãä»»ããããšæããŸãã次ã«ã NUnitãšã³ãžã³APIãè©ŠãïŒäŸã衚瀺ããã«ã¯å°ãäžã«ã¹ã¯ããŒã«ã
çµå±ãèªåã®ãœãªã¥ãŒã·ã§ã³ãä»ã®åäœãã¹ããã¬ãŒã ã¯ãŒã¯ã䜿çšãããã¹ããœãªã¥ãŒã·ã§ã³ã§ãæ©èœããã®ã§ããã°ãããšæããnunit3testadapterãšäžç·ã«äœ¿çšããã«ã¹ã¿ã vstestãã¹ããã¬ãŒãäœæããŸããã ã«ã¹ã¿ã ãã¬ãŒã¯ã
DiscoveredTests
ããã³DiscoveryComplete
ã€ãã³ãã®ã€ãã³ããã³ãã©ãŒãå®çŸ©ããŸãã ãã¬ãŒã¯ãæ€åºããããã¹ãã±ãŒã¹ãªããžã§ã¯ãã®ãªã¹ããjsonãã¡ã€ã«ã«ã·ãªã¢ã«åãããããä»ã®å Žæã§åŠçããŸãã ãã¬ãŒã䜿çšããã«ã¯ãvstestã³ã³ãœãŒã«ãå®è¡ãããã¹ãæ€åºã®ã¿ãå®è¡ãããããã«/ListTests
ã¹ã€ãããæäŸããã«ã¹ã¿ã ãã¬ãŒã䜿çšããå¥ã®ãªãã·ã§ã³ïŒvstest.console.exe <testassemblypath> /ListTests /Logger:<customloggername> -- RunConfiguration.TestAdaptersPaths=<directoryofcustomlogger>;<directoryofnunitadapter>
ïŒããã«ã®åŸã«ã¹ããŒã¹ãããããšã«æ³šæããŠãã ããïŒãã€ãã³ïŒã ãã ãžã®åç §ãè¿œåMicrosoft.TestPlatform.TranslationLayer
ããã¯ããªãã«vstestãªããžã§ã¯ãã¢ãã«ãšã®äž¡æ¹ã«ã¢ã¯ã»ã¹ã§ããŸãã®ã§ã JsonDataSerializerãçºèŠããããã¹ãã±ãŒã¹ã®ããŒã¿ããã·ãªã¢ã©ã€ãº/ã·ãªã¢ã©ã€ãºã®ããã«ã ãã¹ãæ€åºã€ãã³ããå°å ¥ãããã©ãããã©ãŒã ã®ããŒãžã§ã³ãšäºææ§ããããããå°ãªããšãv16ã®translationlayerããã±ãŒãžãå¿ èŠã ãšæããŸãã nugetããvstestãããŠã³ããŒãã§ããŸãããŸãã¯ãVisual Studio 2019ãã€ã³ã¹ããŒã«ãããŠããå Žåã¯ããã§ã«ããŠã³ããŒããããŠããŸãããã1ã€ã®æ¹æ³ã¯ãvstest.console.exeãšNUnit3Adapterã䜿çšãã DumpXmlTestDiscoveryã¢ããã¿ãŒèšå®ãæå¹ã«ããããšã§ãã ãã ãããã³ãã¯èšºææ å ±ã§ãããããå®éã«ã¯ãããªãã¯APIã§ã¯ãªããå€æŽãããå¯èœæ§ããããšæããŸãã ç§ã¯è©ŠããŠããŸããããäžèšãšåãvstest.console.exeã³ãã³ãã©ã€ã³ããªãã¯ã䜿çšããŠãã³ãã³ãã©ã€ã³ããdumpxmltestdiscoveryãªãã·ã§ã³ãæå¹ã«ã§ããã¯ãã§ãïŒ
vstest.console.exe <testassemblypath> /ListTests -- NUnit.DumpXmlTestDiscovery=True
ããã®è§£æ±ºçã¯ããªãã®ããŒãºã«å¯ŸããŠå°ãäžãè¡ããããããŸããããããã¯çµå±å€ãã®ã³ãŒãã§ã¯ãããŸããã§ããã æ¶è²»è ã¯vstestããŒãžã§ã³16以éã䜿çšããŠããå¿ èŠããããŸãã é ã®ãŠã£ãºãããã¯æãåºããŸããããã«ããŽãªãŒã¯ããã©ãããã ã£ããšæããŸãã
åç §ïŒ
[ç·šé]䜿çšäŸãæŽæ°ããŸãã-ééã£ãruncoâânfigurationããããã£ãå«ããŸãã