测试方法在测试套件中失败,但在 .net C# 中单独通过

Test Method Fails in Test Suite but passes individually in .net C#

我在 .net 回归测试中遇到了一个非常奇怪的问题。我有一个测试方法,当我 运行 完整的测试套装时失败,但当单独 运行 时相同的测试方法通过。

这背后的可能原因是什么。我仔细检查了其他测试方法对它没有影响。测试方法使用 web 服务来获取一些数据,我不知道为什么在套件中 运行 时它会获取不正确的数据。

有没有人遇到过类似的情况。

I am encountering a very strange problem in .net regression testing. I have a test method which fails when I run the complete test suit, but the same test method passes when run individually.

我以前遇到过类似的事情,通常与:

  1. 应用程序设置。 Web 服务可能就是这种情况。请注意,您的测试 运行 在测试应用程序中,而不是在正常的 'exe' 应用程序中。
  2. 静态变量/初始化。如果你有一个 [testmethod] 和一个 [testclass],class 将被实例化一次,之后将调用所有方法。如果您在 class 中使用状态,事情可能会崩溃。

在所有情况下,弄清楚发生了什么的最简单方法可能是在调用服务之前放置一个断点。

我也遇到过同样的问题,而且不是微软框架独有的。我也在 NUnit 中看到过这一点。对我来说(也是最常见的)是你在多个测试中访问同一个项目,所以它的状态不像你在 运行 作为一个组时所期望的那样。一开始有点难以发现,但如果您在编写测试时想到任何测试都应该能够 运行 在几乎任何情况下的任何时间,那么您就可以开始了。

为了帮助找出问题所在,请尝试断言您假设为真的状态(例如 Id == 1、或 Name == null 或 IsConnected == false)如果你能得到它在你开始之前就失败了,你可以确定这与状态有关。

你很可能有某种测试污染。检查您创建的任何全局状态,以确保在 运行 测试之前将其重置为所需状态。

使用大量的日志记录来找到它的来源:)