MSTest はテストメソッドを実行する順序をどのように決定しますか? 質問する

MSTest はテストメソッドを実行する順序をどのように決定しますか? 質問する

編集:注:質問288805は似ていますが、私は具体的にMSTestがどのようにしてデフォルトテストの順序。この質問の残りの部分を参照してください。Eilonに感謝しますリンク

レガシー MSTest プロジェクトを調べていました。テストは常に同じ順序で実行されていました。順序はアルファベット順ではなく、2 つの *.cs TestMethod ファイル内のメソッド間を行き来していました。

レガシー コードの物理的な順序は変更していません。便宜上、最初のテストのメソッド名に「MSTest01」を追加し、2 番目のテストのメソッド名に「MSTest02」を追加するなどしました。

驚いたことに、TestMethod 関数の実行順序が変わりました。#3 が最初、#6 が 2 番目、#5 が 3 番目、というように変わりました。

TestMethod 関数名から「MSTestnn」文字列を削除すると、実行順序が以前の順序に戻りました。つまり、最初の .cs ファイルから 1 つのテスト、2 番目の .cs ファイルから 2 つのテスト、最初の .cs ファイルから 5 つのテスト、というように実行されました。

ファイルの場所は、TestMethod関数名では要因にならないようです5月要因となる。

質問: MSTest が TestMethod 関数の実行順序をどのように決定するかを説明できる人はいますか?

ベストアンサー1

MSTest はテスト メソッドを 'ID' (完全な名前空間のようです) で順序付けて実行すると思います。

4 つの単体テスト (UnitTest1、...2、...A、...B) を含む TestProject1 を作成しました。各単体テストには 5 つのテスト メソッド (TestMethodA、...B、...1、...2、...3) が含まれています。これらはテスト クラス内でランダムな順序で宣言されました。これで、MSTest を実行するたびに、テストは同じ順序で実行されます。

TestProject1.UnitTest1.TestMethod1
TestProject1.UnitTest1.TestMethod2
TestProject1.UnitTest1.TestMethod3
TestProject1.UnitTest1.TestMethodA
TestProject1.UnitTest1.TestMethodB
TestProject1.UnitTest2.TestMethod1
TestProject1.UnitTest2.TestMethod2
TestProject1.UnitTest2.TestMethod3
TestProject1.UnitTest2.TestMethodA
TestProject1.UnitTest2.TestMethodB
TestProject1.UnitTestA.TestMethod1
TestProject1.UnitTestA.TestMethod2
TestProject1.UnitTestA.TestMethod3
TestProject1.UnitTestA.TestMethodA
TestProject1.UnitTestA.TestMethodB
TestProject1.UnitTestB.TestMethod1
TestProject1.UnitTestB.TestMethod2
TestProject1.UnitTestB.TestMethod3
TestProject1.UnitTestB.TestMethodA
TestProject1.UnitTestB.TestMethodB

この順序を変更する唯一の方法は、1 つの TestClass または TestMethod の名前を変更することです。たとえば、UnitTest1 の TestMethodB の名前を TestMethod4 に変更すると、TestMethodA の前に実行されます。

テスト メソッドの ID を表示するには、VS から [テスト ビュー] ウィンドウを開き、列ヘッダー (例: テスト名) を右クリックし、[列の追加/削除...] を選択して [ID] 列を追加します。

おすすめ記事