测试方法中的测试方法失败,但在.net C#中单独传递

时间:2016-03-04 10:18:17

标签: c# unit-testing regression-testing

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

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

有没有人早些时候遇到类似的情况。

3 个答案:

答案 0 :(得分:2)

  

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

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

  1. 应用程序设置。这可能是Web服务的情况。请注意,您的测试是在测试应用程序中运行的,而不是在您的普通' exe'应用
  2. 静态变量/初始化。如果您有[testmethod][testclass],则该类将被实例化一次,之后将调用所有方法。如果你在课堂上使用状态,事情就会崩溃。
  3. 在所有情况下,找出正在进行的操作的最简单方法可能是在调用服务之前设置断点。

答案 1 :(得分:0)

我也遇到了同样的问题,它不仅仅是Microsoft框架所独有的。我也在NUnit中看过这个。对我来说(也是最常见的)是你在多个测试中访问相同的项目,以便它的状态不像你作为一组运行时所期望的那样。一开始很难发现,但如果你在编写测试时心里想到任何测试都应该能够在任何时候运行,那么你应该好好去。

帮助寻找问题所在的尝试如果你能让它失败,那么断言你假设的状态是真的(例如Id == 1,或Name == null,或IsConnected == false)在你开始之前,你可以确定它与国家有关。

答案 2 :(得分:0)

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

使用大量的日志记录来获取它的来源:)