【问题标题】:Differentiate between unit and integration tests category by parameter with NUnit使用 NUnit 通过参数区分单元测试和集成测试类别
【发布时间】:2018-06-22 01:59:06
【问题描述】:

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

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

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

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

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

我不必按类别做,但我也不知道有什么其他方法。

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

【问题讨论】:

    标签: unit-testing nunit integration-testing


    【解决方案1】:

    假设你想以相同的方式运行一个测试运行中的所有测试,你可以在命令行中指定一个运行参数,比如

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

    然后你可以在任何需要它的测试中检索参数

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-25
      • 2011-07-18
      • 1970-01-01
      • 2011-02-06
      • 2016-01-23
      • 2016-10-03
      • 2022-12-16
      • 1970-01-01
      • 2011-06-21
      相关资源
      最近更新 更多