unit-testing - 如何命名和组织测试具有多个参数的方法的单元测试?

标签 unit-testing language-agnostic

鉴于必须测试的这种方法:

// Search the given value using the provided search options
// Return true if the searchValue was found; false otherwise 
bool Search(string searchValue, bool useExactSearch, bool useIndexing)

我有 6 个重要的 searchValues(一个带有标点符号,一个带有重音字符,一个带有换行符等),我需要使用 useExactSearch 和 useIndexing 的每种可能组合进行验证。这意味着 54 个测试用例。

你怎么看?你真的会写 54 个单元测试吗?如果是这样,你如何命名它们?你是否只为最重要的情况编写测试?您是否编写了一个循环遍历参数值和预期结果表的单元测试?如果我做一个单一的单元测试,当持续集成报告失败时,很难找到哪个案例被破坏了。

最佳答案

如果您使用的是 NUnit (.Net),您可以这样做:

[TestCase("John*",true, false, false)]
[TestCase("*user*",false, true, true)]
[TestCase(".",true, false, true)]
public void SearchTest(string param1, bool param2, bool param3, bool expectedResult)
{
    YourClass clazz = new YourClass();
    bool result = clazz.Search(param1, param2, param3);
    Assert.AreEqual(expectedResult, result);
}

NUnit Test Runner 将执行 3 次。而且,正如你所看到的 here ,报告显示所有测试用例分开,这有助于您确定谁破坏了构建。
这可能适用于大多数 xUnit 框架。

关于unit-testing - 如何命名和组织测试具有多个参数的方法的单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5259942/

相关文章:

php - 如何测试设置 protected 属性的构造函数?

audio - 如何访问扬声器播放的波形?

performance - 递归还是迭代?

algorithm - EngineYard SHA1 竞赛方法

visual-studio - 使用输入文件进行单元测试

javascript - EmberJS + EmberCLI 单元测试辅助函数未定义

java - 用 1 个测试测试多个类

unit-testing - 在单个单元测试失败时失败 TFS 构建

language-agnostic - sleep() 是如何工作的?

math - float 学有问题吗?