您是否可以编写Junit样式单元测试而无需使用'assertEquals'进行说明,异常失败测试

时间:2009-03-21 07:45:13

标签: testing junit mocking

我注意到了一些单元测试,比如在spring框架中设置对象和测试但没有显式使用assert方法。

基本上,你是否有例外。

这个单元测试了吗?这是要避免的吗? 例如,以下是Spring框架中的一些测试。没有断言条款,只是一个测试。

public void testNeedsJoinPoint() {
    mockCollaborator.needsJoinPoint("getAge");
    mockControl.replay();
    testBeanProxy.getAge();
    mockControl.verify();
}

4 个答案:

答案 0 :(得分:4)

您展示的测试充满了期望,但它们是以模拟对象的形式表达的。

有些测试可能完全没有断言,但对我来说仍然没问题,例如,只是加载spring上下文并且(隐式)断言其有效性的测试。我真的认为问题应该是它是否是一个好的测试。有时它可能是,有时它只是你能得到的最好的。而且它往往比没有好多了。

答案 1 :(得分:1)

每个例外都会让测试失败。因此,您可以使用自己的例外来打破单元测试 如果您阅读源代码,assertXXX将向TestRunner抛出异常。所以单元测试建立在异常的基础上。

嘲弄绝对没有什么可以避免的。这很好,因为可能鼓励隔离你的测试。

答案 2 :(得分:1)

如果您担心,请尝试破解代码以确保测试有效。

答案 3 :(得分:0)

我将此称为“烟雾测试”并经常这样做。

这就像运行引擎并断言没有烟雾,即没有抛出异常。就个人而言,我认为这种风格很好(但是,嘿,我也是推动依赖测试的人)。