基本的に2つのスレッドを実行する単体テストのサンプルコードがあります。メインのテストスレッドと、しばらくしてからテストの実行に失敗するはずの起動中の別のスレッドです(これは基本的にタイムアウトスレッドです)。
コードは次のとおりです。
[TestClass]
public class SomeTestClass
{
[TestInitialize]
public void BeforeTest()
{
var task = new Task(abortIfTestStilRunsAfterTimeout);
task.Start();
}
[TestMethod]
public void TestMethod()
{
Thread.Sleep(5000);
}
private void abortIfTestStilRunsAfterTimeout()
{
Assert.Fail("timeout passed!");
}
}
テストが失敗することを期待していましたTestMethod()
が、実際には、Assert.Fail
メソッドを実行するタスク スレッドが例外を取得し、他のスレッドが実行を続けてテストに合格するということが起こります。
テストメソッドを失敗させる方法を探しています