edit:注、質問288805も同様ですが、MSTestがdefaultテスト順序。この質問の残りの部分を参照してください。 Eilonに感謝します リンク 。
私はレガシーMSTestプロジェクトを見ていました。テストは常に同じ順序で実行されていました。順序はアルファベット順ではなく、2つの* .csTestMethodファイルのメソッド間でバウンスしていました。
レガシーコードの物理的な順序は変更しませんでした。便宜上、最初のテストのメソッド名に「MSTest01」を追加し、2番目のテストのメソッド名に「MSTest02」を追加しました。
驚いたことに、TestMethod関数の実行順序が変更されました。 #3ファースト、#6セカンド、#5サードなど。
TestMethod関数名から「MSTestnn」文字列を削除すると、実行順序が以前の順序に戻りました。つまり、最初の.csファイルから1つのテスト、2番目の.csファイルから2つのテスト、最初の.csファイルから5つのテストです。 csファイルなど。
TestMethod関数名mayが要因であるのに対し、ファイルの場所は要因ではないようです。
質問:MSTestがTestMethod関数の実行順序を決定する方法を誰かが説明できますか?
MSTestは、「ID」(完全な名前空間のようです)で並べ替えたテストメソッドを実行すると思います。
4つのuntテスト(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]列を追加します。
MSDNによると;-)
方法:順序付けられたテストを作成する
MSTest.exeコマンドラインオプション
http://msdn.Microsoft.com/en-us/library/ms182489(v = vs.120).aspx
VSTestの実行順序について。 TestProjectでの構成は次のとおりです。
たとえば、プロジェクトに3つのcsファイルがあります。
次に、テストを実行する順序は次のとおりです。
TestProject1.UnitTest1.TestMethod05
TestProject1.UnitTest1.TestMethod03
TestProject1.UnitTest3.TestMethod01
TestProject1.UnitTest2.TestMethod02
次のコマンドを使用して、「デフォルトの順序」を確認できます。
vstest.console.exe TestProject1.dll/ListTests