unit-testing - 单元测试调用另一个方法的方法

标签 unit-testing testing

对调用多个方法的方法进行单元测试的最佳方法是什么,例如:

modify(string value)
{
    if(value.Length > 5)  replaceit(value);

    else changeit(value);
}

此伪代码有一个修改方法,(当前)调用 replaceit()changeit()。我已经为 replaceitchangeit 编写了测试,因此为 modify 编写新测试将是 99% 的同一组代码。我需要测试它的想法,因为它可能会在未来发生变化。

那么我是否复制粘贴现有的测试代码?将测试代码移动到一个通用函数?还有其他想法吗?我不确定此处的最佳做法。

最佳答案

这是一个经典的基于状态的测试与基于行为的测试场景。

在这个非常简单的例子中,测试输出是好的。但是在某些时候,您会遇到执行后检查状态很复杂的测试。相反,您想检查行为(例如,验证是否使用特定值调用了 changeit)。

到那时,您可能应该研究模拟对象框架,如 Rhino.Mocks (.Net) 或 Mockito (Java),并开始编写更多基于接口(interface)的代码。

关于unit-testing - 单元测试调用另一个方法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363596/

相关文章:

python - 如何在 unittest.TestCase 中访问 unittest.main(verbosity) 设置

javascript - React 中的单元测试非静态方法

c++ - makefile.am 可以为一组目标设置 LDADD 吗?

ios - 在 iOS 上使用 Appium 生成代码覆盖率

facebook - 如何为应用程序页面创建测试用户?

unit-testing - 在单元测试中使用多个断言是一种不好的做法吗?

c# - 如何在不重新加载页面的情况下运行第二次测试

testing - 从哪里可以获得大量工作安全域名?

asp.net - 在慢速连接下模拟/测试性能的最佳方法?

swift - WatchOS 单元测试