この問題についてグーグル検索しましたが、答えが見つかりませんでした。
私のテスト実行は並行して実行されているように見え、お互いに失敗します。個別に実行すると、すべて合格します。テストにスレッドを追加してスリープ状態にしようとしましたが、うまくいきませんでした。
これらのテストを順番に実行する方法はありますか?
私の環境:
Visual Studio 2010 Resharper Jet 頭脳 6.1
この問題についてグーグル検索しましたが、答えが見つかりませんでした。
私のテスト実行は並行して実行されているように見え、お互いに失敗します。個別に実行すると、すべて合格します。テストにスレッドを追加してスリープ状態にしようとしましたが、うまくいきませんでした。
これらのテストを順番に実行する方法はありますか?
私の環境:
Visual Studio 2010 Resharper Jet 頭脳 6.1
決定論的な単体テストを用意することをお勧めします。つまり、実行される順序や、他のテストが前後に実行されることに依存しません。これを行わないことは、失敗の元です。ほとんどのテスト ランナーは、テスト メソッドが完全に独立しているという事実に基づいています。
この事実は、テスト クラスのメソッドが呼び出される方法で本質的に明らかです。たとえば、MS Test では、Assembly、Class、および Test の初期化メソッドを使用できます。これらはすべて、呼び出される TestMethod ごとに呼び出されます。たとえば、次のクラスを使用します。
[TestClass()]
public class DivideClassTest
{
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
Console.WriteLine("Assembly Init");
}
[ClassInitialize()]
public static void ClassInit(TestContext context)
{
Console.WriteLine("ClassInit");
}
[TestInitialize()]
public void Initialize()
{
Console.WriteLine("TestMethodInit");
}
[TestCleanup()]
public void Cleanup()
{
Console.WriteLine("TestMethodCleanup");
}
[ClassCleanup()]
public static void ClassCleanup()
{
Console.WriteLine("ClassCleanup");
}
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
Console.WriteLine("AssemblyCleanup");
}
[TestMethod()]
public void Test1()
{
Console.WriteLine("Test1");
}
[TestMethod()]
public void Test2()
{
Console.WriteLine("Test2");
}
}
次のような出力が表示されます
Assembly Init
ClassInit
TestMethodInit
Test1
TestMethodCleanup
TestMethodInit
Test2
TestMethodCleanup
ClassCleanup
AssemblyCleanup
「Test」クラスはありますが、TestMethod 自体がテストと見なされます。「テスト」クラスは、効果的に多くのテストを持つことができます。