c# - 使用 NUnit,我可以确定哪些测试先于当前运行的测试吗?

标签 c# visual-studio unit-testing testing nunit

这是我的场景 - 使用 NUnit 在 C# 中编码,我有这些测试:

  • 测试1
  • 测试2
  • 测试3
  • 测试4
  • 测试X

这些测试的前四个 都是独立运行的,但我需要 TestX 以稍微不同的方式运行。根据我刚刚运行的之前的测试,此测试需要以不同的方式运行。

例如,如果我选择在一次运行中运行 Test1、Test2 和 TestX,那么 TestX 将以一种方式运行,但如果我改为运行 Test3、Test4,然后运行 ​​TestX,它将以不同的方式运行。我希望有一种方法可以访问在特定运行中使用了哪些测试,并将其提供给 switch 语句以相应地更改 TestX。

澄清:我不需要 TestX 知道前四个测试的结果或关于它们如何运行的任何信息,只需要了解它们是否已运行即可。此外,当我提到单个“测试运行”时,我的意思是按住 CTRL 在测试资源管理器中单击多个测试,然后一次性运行它们。

我似乎无法从 TestContext 访问此信息,但我真的希望有另一种我尚未想到的方法。任何帮助将不胜感激 - 非常感谢。

最佳答案

首先,恕我直言,你想做的是个坏主意。

话虽如此,我能想到的唯一可靠方法是将 TestX 的行为基于其他测试运行的一些可观察到的副作用。因此,如果测试都将数据添加到数据库中的表中,那么让 TestX 查看创建了哪些数据,然后相应地进行操作。你不应该这样做。

现在回到我认为你应该做的:

有几个 TestX 变体,每个变体都测试如果前面的每个测试都运行了,TestX 应该做什么,即将你建议的 switch 语句的每个部分放入一个单独的测试中,并安排(或设置)那个test 做与运行前面的测试相同的工作。

这可能看起来需要更多工作,但它会为您提供更好、更具可重复性的测试,我认为这将更易于维护。

关于c# - 使用 NUnit,我可以确定哪些测试先于当前运行的测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33693072/

相关文章:

c# - 将远程调试器附加到几乎立即崩溃的进程

c# - 当客户端关闭连接时,IIS/ASP.NET 可以中止 HTTP 请求吗?

visual-studio - 如何从 Visual Studio ASP.NET Web API 应用程序禁用 Docker?

c++ - 这两种包含相同 header 的方式在编译器中是否发生了不同的事情?

Android:jUnit 测试 Android 库

c# - 将 jpeg 图像转换为十六进制格式

c# - MVC 编辑存储在隐藏字段中的复杂对象

c# - 我可以为我自己的类(如 int、string、object)定义 C# 别名/关键字吗?

unit-testing - 如何对时序逻辑进行单元测试?

c# - 如何在 C#/VS 中构建自定义断言?