使用NUnit

时间:2018-01-12 15:15:55

标签: unit-testing nunit integration-testing

我有NUnit测试,它们在单元(快速)和集成(慢)测试之间分开。

现在我有一些针对http模拟运行的测试(在这种情况下它们是单元测试)和针对真实的Web服务器(在这种情况下它们是集成测试)。

因为测试代码仅在使用的http对象中有所不同,所以我这样做:

    async public Task HttpTest([Values("Real", "Mock")] string httpType)
    {
        var HttpObject = (httpType == "Mock") ? MockObject : RealObject;
        ...
    }

这很好用。但现在我想创建单元和集成测试的类别,因为我经常只想运行(快速运行)单元测试。

我不必按类别进行,但我也不知道其他任何方式。

我能以某种方式选择是否要运行" Real"和/或"模拟"从命令行进行测试?

1 个答案:

答案 0 :(得分:0)

假设您想以相同的方式在测试运行中运行所有测试,您可以在命令行上指定运行参数,例如

nunit3-console.exe mytests.dll -p "http=Real"

然后,您可以使用

在任何需要它的测试中检索参数
var httpParam = TestContext.Parameters.Get("http", "Real");

如果命令行中未提供参数,则调用中的第二个参数是要使用的默认值。

如果您这样做,则不需要多个测试用例或类别。