我最近写了一个测试夹具,它构建了单线程或多线程模式下的测试代码。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));
}
}