我有NUnit测试,它们在单元(快速)和集成(慢)测试之间分开。
现在我有一些针对http模拟运行的测试(在这种情况下它们是单元测试)和针对真实的Web服务器(在这种情况下它们是集成测试)。
因为测试代码仅在使用的http对象中有所不同,所以我这样做:
async public Task HttpTest([Values("Real", "Mock")] string httpType)
{
var HttpObject = (httpType == "Mock") ? MockObject : RealObject;
...
}
这很好用。但现在我想创建单元和集成测试的类别,因为我经常只想运行(快速运行)单元测试。
我不必按类别进行,但我也不知道其他任何方式。
我能以某种方式选择是否要运行" Real"和/或"模拟"从命令行进行测试?
答案 0 :(得分:0)
假设您想以相同的方式在测试运行中运行所有测试,您可以在命令行上指定运行参数,例如
nunit3-console.exe mytests.dll -p "http=Real"
然后,您可以使用
在任何需要它的测试中检索参数var httpParam = TestContext.Parameters.Get("http", "Real");
如果命令行中未提供参数,则调用中的第二个参数是要使用的默认值。
如果您这样做,则不需要多个测试用例或类别。