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

本文关键字:net 单独通 但在 失败 测试 套件 测试方法 | 更新日期: 2023-09-27 18:37:16

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

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

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

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

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

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

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

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

您很可能以某种方式进行了测试污染。在运行测试之前,请检查您创建的任何全局状态,以确保它已重置为所需状态。

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

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

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