我最近寫了一個測試夾具,它構建了單線程或多線程模式下的測試代碼。NUnit 3:第一次測試超時
但是其中一個測試(A)在構建代理上始終失敗,但僅適用於多線程模式。 通過(B)的測試與失敗的測試(B)之間幾乎沒有區別。
因此,具有兩個夾具屬性的兩個測試變成四個測試,並且只有三個測試中的一個失敗。
在本地運行時,所有四個測試都會執行並在20毫秒內傳遞,因此它在20毫秒和超過5秒的超時之間真的非常巨大。
[TestFixture(MyCodeMode.SingleThreaded)]
[TestFixture(MyCodeMode.MultiThreaded)]
[Timeout(5000)]
public class MyCodeTests {
private MyCodeMode _mode;
public MyCodeTests(MyCodeMode mode) {
_mode = mode;
}
private MyCode GetSystemUnderTest() {
return new MyCode(_mode);
}
[Test]
// this test fails when multi-threaded, passes in single-threaded
public void MyTest_A_ThrowsInvalidOperationException() {
Assert.Throws<InvalidOperationException>(() => GetSystemUnderTest().Execute(2));
}
[Test]
// this test passes regardless of mode
public void MyTest_B_ThrowsInvalidOperationException() {
Assert.Throws<InvalidOperationException>(() => GetSystemUnderTest().Execute(3));
}
}