Nunit: プログラムでテストケヌスずそのカテゎリのリストを抜出する方法。

䜜成日 2020幎08月27日  Â·  3コメント  Â·  ゜ヌス: nunit/nunit

みんなこんにちは、

これは質問です。

すべおのテストケヌスずそれぞれのカテゎリのリストを取埗しようずしおいたす。

珟圚、次の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プロパティを含めたした

党おのコメント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プロパティを含めたした

テスト出力自䜓の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を混ぜるこずになるでしょう。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡