web-dev-qa-db-ja.com

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

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関数の実行順序を決定する方法を誰かが説明できますか?

20
gerryLowry

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]列を追加します。

7
chaliasos

MSDNによると;-)

方法:順序付けられたテストを作成する

http://msdn.Microsoft.com/en-us/library/ms182631.aspx

MSTest.exeコマンドラインオプション

http://msdn.Microsoft.com/en-us/library/ms182489(v = vs.120).aspx

6
Kim Ki Won

VSTestの実行順序について。 TestProjectでの構成は次のとおりです。

  1. プロジェクト内のcsファイルをCREATIONTimeASCで並べ替えます
  2. 各ファイルのメソッド位置

たとえば、プロジェクトに3つのcsファイルがあります。

  • UnitTest1.cs- 1970年1月1日にメソッドTestMethod05およびTestMethod03で作成されました
  • UnitTest2.cs- 1970年5月1日にメソッドTestMethod02で作成されました。
  • UnitTest3.cs- 1970年3月1日にメソッドTestMethod01で作成されました。

次に、テストを実行する順序は次のとおりです。

    TestProject1.UnitTest1.TestMethod05
    TestProject1.UnitTest1.TestMethod03
    TestProject1.UnitTest3.TestMethod01
    TestProject1.UnitTest2.TestMethod02

次のコマンドを使用して、「デフォルトの順序」を確認できます。

vstest.console.exe TestProject1.dll/ListTests

3
Ivan Tsyng