【发布时间】:2010-05-05 17:56:44
【问题描述】:
我在一个类中有一个方法,它们有几个不同的结果(基于事件响应等)。但这是供其他应用程序使用的单个原子函数。
我已将构成此功能的主要功能块分解为不同的功能,并成功地采用了测试驱动开发方法来处理每个元素的功能。然而,这些元素不会暴露给其他应用程序使用。
所以我的问题是我如何/应该如何轻松地使用 TDD 风格的解决方案来验证应该调用的单个方法是否正确运行,而无需在测试中进行大量重复或每次测试都需要大量设置?
我已经考虑/考虑将功能块移动到不同的类中,并使用 Mocking 来模拟所用函数的响应,但感觉不对,并且各个方法需要写入主类中的变量(感觉真的是希思·罗宾逊)。
代码大致是这样的(我删除了很多参数以使事情更清晰,还有一些不相关的代码)。
public void MethodToTest(string parameter)
{
IResponse x = null;
if (function1(parameter))
{
if (!function2(parameter,out x))
{
function3(parameter, out x);
}
}
// ...
// more bits of code here
// ...
if (x != null)
{
x.Success();
}
}
【问题讨论】:
-
如果一个方法影响了应用程序的一部分而没有给出任何类型的返回/响应,如果它失败与否,有人可能会说设计有问题。我会重构方法,首先创建一个测试方法! (您可以在这里阅读有关它的信息:blog.smartit.se/2010/04/23/…)。如果该方法返回 void 并且没有抛出任何异常,那么它可能有效.. 对吗?可能是错误的设计。然而,这只是一个指针,而不是一个答案:)
标签: c# .net unit-testing tdd