对调用另一个组件的另一个void方法的方法进行Junit测试



我有一个方法a (Check),它调用另一个void方法B(wantToSkip)。A将抛出一个异常,我将为此编写junit测试。在这种情况下,我想避免调用方法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);
}

如果你为class 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);
}

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

mockito的最新非测试版在这里:http://mvnrepository.com/artifact/org.mockito/mockito-all/1.10.19

相关内容

  • 没有找到相关文章

最新更新