重复测试用例

时间:2013-03-06 03:46:59

标签: unit-testing testing tdd

我的问题是,是否可以针对每种情况重复相同的测试断言或案例?

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

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

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

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

我希望有人会理解我的意思,我知道这太笼统了,因为我想要一个普遍的立场,如果这在大多数情况下确实有些适用。

2 个答案:

答案 0 :(得分:5)

您需要定义适当的测试。

我问自己一些问题:

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

我明白你的意思,并且我认为在多个场景中使用相同/类似的测试用例没有任何问题,只要你涵盖上述问题。

答案 1 :(得分:5)

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

以下是使用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属性中指定的每组参数。

确切的语法和用法当然取决于您的工具集,但基本思路是一样的。