这是我的方案 - 使用 NUnit 在C#中编码,我有以下测试:
这些测试的前四个都独立运行,但我需要TestX采取不同的行动。该测试需要根据我之前运行的测试而有所不同。
例如,如果我选择在一次运行中运行Test1,Test2和TestX,那么TestX将以一种方式运行,但如果我改为运行Test3,Test4和TestX,它将采取不同的行动。我希望有一种方法可以访问特定运行中使用的测试,并将其提供给switch语句以相应地更改TestX。
澄清:我不需要TestX知道前四个测试的结果或任何关于它们如何运行的结果,只是简单地说它们是否已经运行。另外,当我说单个"测试运行"时,我的意思是CTRL在测试资源管理器中单击几个测试,然后一次性运行它们。
我似乎无法从TestContext访问此信息,但我真的希望还有另一种我尚未想到的方式。任何帮助将不胜感激 - 非常感谢。
答案 0 :(得分:0)
首先,我要说,恕我直言,你想做的是一个坏主意。
话虽如此,我能想到的唯一可靠的方法是将TestX的行为建立在运行其他测试的一些可观察的副作用上。因此,如果测试都将数据添加到数据库中的表中,那么让TestX查看创建了哪些数据,然后相应地运行。你不应该这样做。
现在回到我认为你应该做的事情:
有几个TestX变体,每个变量测试TestX应该在前面的每个测试运行时应该做什么,即将你提出的switch语句的每个部分放到一个单独的测试中,并具有那个的安排(或设置) test执行与前面的测试相同的工作。
这可能看起来更有效,但它会为您提供更好的可重复测试,我认为这些测试更易于维护。