使用 NUnit 按参数区分单元测试和集成测试类别



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

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

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

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

这工作正常。但是现在我想创建单元测试和集成测试的类别,因为通常我只想运行(快速运行的(单元测试。

我不必按类别来做,但我也不知道任何其他方法。

我可以以某种方式选择是否要从命令行运行"真实"和/或"模拟"测试吗?

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

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

然后,您可以使用

var httpParam = TestContext.Parameters.Get("http", "Real");

调用中的第二个参数是在命令行上未提供参数时使用的默认值。

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

最新更新