0

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

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

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

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

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

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

4

2 回答 2

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 属性中指定的每组参数一次。

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

于 2013-03-06T04:00:03.477 回答
5

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

我问自己的一些问题:

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

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

于 2013-03-06T03:52:15.403 回答