Junit测试一个方法,该方法调用另一个组件的另一个void方法

时间:2015-09-18 16:22:35

标签: java junit mockito junit4

我有一个方法A(Check),它调用另一个void方法B(wantToSkip)。 A将抛出一个异常,我将编写junit test。在这种情况下想避免调用方法B.我怎样才能实现呢? 代码如下:

class A {
    Class c = new Class();
    Public void setC(C c) {
    this.c = c;
}
    String check(){
        try{
            //do something
        } catch(Exception test) {
            c.wantToSkip();
        }
        ...
    }
}

这里我只想确保抛出异常测试,但想跳过其中的调用方法。 我试过以下但没有工作

@Test//(expected= Exception.class)
public void test(){
class c = Mockito.spy(new class());
Mockito.doNothing().when(c).wantToSkip();
check(some arguments);
}

1 个答案:

答案 0 :(得分:0)

如果您为C类提供了一个setter,您可以使用Mockito来实现您想要的目标。

您的单元测试看起来像这样:

@Mock private Class mockC;

@Test
public void test(){
    A a = new A();
    a.setC(mockC);
    a.check(some arguments);
}

或者您可以在构造函数中使用Class c,在这种情况下,您的测试可能如下所示。

@Mock private Class mockC;

@Test
public void test(){
    A a = new A(mockC);
    a.check(some arguments);
}

mockC没有为调用c.wantToSkip()时指定的行为,因此它不会做任何事情。

mockito的最新非beta版本位于:http://mvnrepository.com/artifact/org.mockito/mockito-all/1.10.19