对调用多个方法的方法进行单元测试的最佳方法是什么,例如:
modify(string value)
{
if(value.Length > 5) replaceit(value);
else changeit(value);
}
此伪代码有一个修改方法,(当前)调用 replaceit()
或 changeit()
。我已经为 replaceit
和 changeit
编写了测试,因此为 modify 编写新测试将是 99% 的同一组代码。我需要测试它的想法,因为它可能会在未来发生变化。
那么我是否复制粘贴现有的测试代码?将测试代码移动到一个通用函数?还有其他想法吗?我不确定此处的最佳做法。
最佳答案
这是一个经典的基于状态的测试与基于行为的测试场景。
在这个非常简单的例子中,测试输出是好的。但是在某些时候,您会遇到执行后检查状态很复杂的测试。相反,您想检查行为(例如,验证是否使用特定值调用了 changeit)。
到那时,您可能应该研究模拟对象框架,如 Rhino.Mocks (.Net) 或 Mockito (Java),并开始编写更多基于接口(interface)的代码。
关于unit-testing - 单元测试调用另一个方法的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363596/