在 MSTest 中的测试执行之间延迟/暂停



我有一个包含多个项目的解决方案(C# 类库),我目前正在使用 MSTest 中的测试用例测试该功能。添加更多测试用例后,我能够观察到一些测试用例在与其他测试用例批量执行时经常失败。当仅执行这些测试用例时,它们将始终成功。

当我在代码中使用网络接口和系统资源时,我认为观察与它们有关(即使我通过代码在每个案例结束时释放每个资源/端口/连接)。

为了克服这些问题,我正在考虑不同测试用例执行之间的延迟/暂停。由于我有大约 200 个测试用例,因此我想避免为每个用例添加代码。是否有可能告诉 MSTest 系统添加这样的延迟/暂停?

MSTest 项目包含测试用例

  • T1
  • T2
  • T3
  • T200

执行所有测试用例将导致

  • T1 成功
  • T2 成功
  • Tn 失败(超时/内存不足/空引用/未知错误...)
  • T200 成功

Tn 在所有执行期间都不一样(有些 Tn 经常失败,而另一些则到目前为止从未失败过,但没有真正的联系,除了 Tn 失败在批处理后期进行测试)

测试用例中的实际错误也不是确定性的 - 它的范围从超时和随机位置的 Null 引用到内存异常或未知错误。

逐个执行测试将导致

  • T1 成功
  • T2 成功
  • T200 成功

如果您希望在每次测试之前和/或之后发生某些事情,那么您可以使用:

[TestInitialize()]
public void Startup()
{
// code here
}
[TestCleanup()]
public void Cleanup()
{
// code here
}

但是,不建议依靠睡眠来使测试通过 - 我真的会尝试找出异常的根本原因是什么。

最新更新