2016-12-01 68 views
1

我想知道是否应该单元测试没有控制流的功能。这个函数需要一些输入,调用5/6个其他函数的序列,然后返回一些输出。我是否需要单元测试功能而没有控制流?

测试它们似乎浪费时间,因为我没有看到我将要测试的是什么。其他调用的函数已经对它们进行了单元测试。 我的主要缺点是我不知道输出应该是先验的,我需要在测试脚本中调用相同的函数来查看结果是否一致;然后我在测试什么?测试函数和实际函数具有相同顺序的相同行吗?

感谢任何见解

注:同最后一个问题,如果你认为它的主要依据意见重新拟订为“根据艺术主张单元测试的原则,我应该单元测试功能没有控制流? “

+0

测试不测试控制流。测试测试某个函数是否为某些输入返回正确的输出,就是这样。如果您正在进行测试,那么函数不需要进行测试的唯一方法就是假设它的所有子函数都得到了适当的覆盖,那么,如果您对自己作出坚定不移的承诺,那么函数将永远不会被编辑,无论如何。你准备好了吗? – Amadan

+0

@Amadan诚然,你是对的。谢谢,我会执行它们:D – Ant

回答

1

简短回答:是的,当然,你呢!

长答案:一个方法如何做到最后的“实现”细节。从这个意义上说:如果一个方法使用一个开关,一些if/elses,一个循环,或者只是依次调用其他方法,则不应该在意。

取而代之,您应该了解您的方法提供的合同:需要的输入;以及它的内容(取决于输入可能)。

这就是你所关注的:创建一个你的方法可以运行的设置;然后检查该方法是否支持该合同。

实施例:

public void foo(Bar bar) { 
    FooBar fooBar = bar.wobbel(); 
    fooBar.throttle(); 
    fooBar.rattle(this.someField); 
} 

代码以上不含有任何控制流语句。但是,仍然存在各种可能出错的地方(例如NullPointerExceptions)。你不认为用单元测试来捕捉那些人会更好吗?

+1

是的,这很有意义。谢谢! – Ant

+0

非常欢迎。 – GhostCat