2015-11-13 37 views
2

这里是我的方案 - 使用NUnit的 C#编码,我有这方面的测试:使用NUnit,我可以确定当前正在运行的测试之前有哪些测试?

  • Test1的
  • 的Test2
  • Test3的
  • TEST4
  • TestX

这些t的前四个 ests全部独立运作,但我需要TestX稍有不同。根据我以前运行的哪些测试,此测试需要以不同的方式运行。例如,如果我选择在一次运行中运行Test1,Test2和TestX,则TestX将以单向方式运行,但如果我运行Test3,Test4,然后运行TestX,则运行方式将有所不同。我希望有一种方法可以访问在特定运行中使用过哪些测试,并将其馈入switch语句以相应地更改TestX。

澄清:我不需要TestX知道前四个测试的结果或任何关于它们如何运行的结果,只是简单地说明它们是否已运行。另外,当我说参考单个“测试运行”时,我的意思是CTRL在测试浏览器中单击几个测试,然后一次运行它们。

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

回答

0

首先,让我说,恕我直言,你想要做的是一个坏主意。尽管如此,我认为唯一可靠的方法是将TestX的行为建立在运行其他测试的某些可观察副作用的基础上。因此,如果测试全部将数据添加到数据库中的表中,则TestX会查看哪些数据已创建,然后相应地执行。你不应该这样做。

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

有TestX每一篇的几个变化测试,如果前面的每个测试已运行TestX应该做的事情,即把你的建议switch语句的各部分进行单独的测试,并让该测试的安排(或设置)完成与运行上述测试相同的工作。

这可能看起来像更多的工作,但它会给你更好的更可重复的测试,我认为它会更易于维护。

+0

非常感谢 - 完美的答案! – SomeProgrammer

相关问题