2016-03-04 95 views
1

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

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

有人曾经遇到类似的情况。

+1

有什么消息测试失败?您是否尝试过调试测试? –

+3

这里最可能的原因是,在这个特定测试之前运行的一些测试有副作用,会以某种方式影响您的失败测试。 –

+0

@raderick我如何确保这不会发生。任何想法或建议:) –

回答

2

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

我以前也遇到过类似的事情,通常具有做:

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

在所有情况下,找出发生的最简单的方法可能是在调用服务之前放置一个断点。

0

我也遇到了同样的问题,它不只是微软框架独家。我也在NUnit中看到过这个。对我而言(最常见的情况)是你在多次测试中访问同一个项目,以至于它的状态不像你作为一个组运行时期望的那样。开始时很难发现,但如果你在写测试的时候想到任何测试应该能够在任何时候运行,几乎在任何情况下都应该是好的。

为了帮助追查问题是什么尝试断言你假设的状态是事实(如Id == 1或Name == null或IsConnected == false),如果你能得到它在你开始之前就失败了,你可以确定这与状态有关。

0

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

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

相关问题