在junit测试中略读一行

时间:2016-06-03 10:22:42

标签: junit

我正在为一个方法编写junit测试用例。在这样做时,行中有一个异常,它调用另一个void方法。因此,下一行受到影响。我想跳过这一行并继续执行。任何人请建议我解决方案。

helperObject.methodCall(session);//Exception occurred inside this mthd
httpResponse = buildSuccessResponse(ccId);

因此,无论第一行发生什么异常,我都希望执行第二行。(因为异常,我得到了代码覆盖率)。

1 个答案:

答案 0 :(得分:3)

您似乎不了解单元测试的概念:您的想法是,您完全执行一个方法。含义:你永远不会希望你的测试确实可以调用任何东西,除了确切的"生产"您稍后将发送给客户的代码。测试特定于测试的代码没有任何意义。您总是测试将在客户处运行的代码!

因此:如果您认为需要"排除"您正在测试的代码的某些部分&#34 ;;然后不:你不这样做。

相反,您了解该异常的来源,然后您决定该异常是否表示生产代码中存在错误;或者,如果该异常意味着您的单元测试需要进行更多的设置工作。

示例:

class ProductionThingy {
    private DataBaseWhatever whatever;

    int foo() {
       whatever.doSomething();
       return computeSomethingElse();
    }
}

测试:

class ProductionThingyTest {

@Test
public void testFoo() {
  ProductionThingy underTest = new ...
  assertThat(underTest.foo(), is(some expected value))

所以,如果你现在想要测试这个foo()方法......并且由于例如NullPointerException测试失败(因为该字段为null)那么解决方案是到神奇地排除了那个电话whatever.doSomething()

您要做的是确保您的ProductionThingy underTest 对象确实在"中包含非空值;等等#34 ;;例如,使用依赖注入以提供DataBaseWhatever的模拟实例。