[英]Unit Tests failing when I Run All Tests but pass when I Debug
失败的测试共享一个资源,当一起测试时会影响它们。 重新检查受影响的测试及其主题。
您还应该查看主题中的静态字段或属性。 如果在设计类时使用不当,它们往往会导致问题。
可能会出现一些细微的差异。 例如,如果第一个测试改变了影响第二个测试行为的状态,那么如果我单独运行第二个测试的结果可能会不同。
在无法使用断点时帮助理解测试失败的一个想法可能是添加日志记录。
无论如何,回答您的问题:
这曾经发生在其他人身上吗?
是的
我是在做一些愚蠢的事情,还是 VS2017 或 NUnit 中可能存在错误?
我敢打赌这两者都不是:只是一个更微妙的案例
我在使用 MSTest 作为测试框架的 Visual Studio 2017 中遇到了类似的问题。 单元测试中的断言在运行测试时失败,但在调试单元测试时会通过。 这发生在少数单元测试中,但不是全部。 除了断言失败之外,许多单元测试也由于 System.TypeLoadException( 无法从程序集错误加载类型)而失败。 我最终做了以下解决问题的方法:
采取这些步骤后,所有单元测试在运行时开始通过。
我自己也遇到过这种现象,但很容易找到原因。 更具体地说,我测试了一些矩阵计算,在我的测试类中,我将要计算的数据定义为类变量并用它执行计算。 然而,我的矩阵例程修改了原始数据,所以当我在测试类上使用“运行测试”时,第一个测试破坏了数据,下一个测试无法成功。
下面的示例代码试图说明我的意思。
[TestFixture]
public void MyTestClass()
{
[Test]
public void TestMethod1()
{
MyMatrix m = new MyMatrix();
// Method1() modifies the data...
m.Method1(_data);
}
[Test]
public void TestMethod2()
{
MyMatrix m = new MyMatrix();
// here you test with modified data and, in general, cannot expect success
m.Method2(_data);
}
// the data to test with
private double[] _data = new double[1, 2, 3, 4]{};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.