【问题标题】:Repeating test cases重复测试用例
【发布时间】:2013-03-06 03:46:58
【问题描述】:

我的问题是是否可以为每个场景重复相同的测试断言或案例?

这里的场景是,如果我有一个函数,那么可以使用涉及不同参数组合的不同场景来模拟这个函数。

例如,我有一个具有 3 个可能场景的函数,在每个场景中,每次在此函数上模拟此场景时都会发生 3 个类似事件。

当我为场景 A 编写测试时,我将编写 3 个断言来测试该场景中涉及的 3 个事件。可以为其他场景重复相同的断言模式吗?

断言可能不一定相同,但它们具有相同的模式。

我希望有人能理解我的意思,我知道这太笼统了,因为如果这确实适用于大多数情况,我想要一个笼统的观点。

【问题讨论】:

    标签: unit-testing testing tdd


    【解决方案1】:

    真正由你来定义什么是充分的测试。

    我问自己的一些问题:

    单元测试是否测试所有代码路径?我是否涵盖典型案例?我是否涵盖角落案例?我是否涵盖特殊情况(即错误输入)?

    不过,我理解您的意思,我认为在多个场景中使用相同/相似的测试用例没有任何问题,只要您涵盖上述问题。

    【讨论】:

    • 非常感谢您的回答我有一个帮助,您能解释一下典型案例和极端案例的含义。谢谢!
    【解决方案2】:

    根据您使用的语言/工具集/测试框架,参数化测试可能是解决方案。它们允许您编写一个使用不同参数多次调用的单个测试,并且是组合仅在输入或预期输出方面不同的测试用例的好方法。

    这是一个简单的示例,说明使用 C#/NUnit 的测试外观:

    [TestCase(true, false, 5)]
    [TestCase(false, true, 99)]
    public void Test_Foo_Bars(bool conditionA, bool conditionB, int expectedResult)
    {
        var x = new MyClass(conditionA);
        var result = x.Foo(conditionB);
        result.ShouldBe(expectedResult);
    }
    

    这个测试被执行了两次; TestCase 属性中指定的每组参数一次。

    确切的语法和用法当然取决于您的工具集,但基本思想是相同的。

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多