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

Java 调用另一个组件的另一个void方法的方法的Junit测试,java,junit,mockito,junit4,Java,Junit,Mockito,Junit4,我有一个方法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 }

我有一个方法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);
}

如果您为类c提供了一个setter,那么可以使用Mockito实现您想要做的事情

您的单元测试如下所示:

@Mock private Class mockC;

@Test
public void test(){
    A a = new A();
    a.setC(mockC);
    a.check(some arguments);
}
或者,您可以在构造函数中使用
类c
,在这种情况下,您的测试可以如下所示

@Mock private Class mockC;

@Test
public void test(){
    A a = new A(mockC);
    a.check(some arguments);
}
mockC没有为调用
c.wantToSkip()
时指定的行为,因此它不会执行任何操作


mockito的最新非测试版如下:

假设方法A是check();你的方法B在哪里?是wantToSkip()?还有,你有没有试着写你的JUnit?@Balkrishna为你的询问编辑了这个问题。我试过了,但没有成功。此外,我正在寻找最佳方法。您无法避免在异常时调用方法WANTOTOSKIP(),因为这是check()的行为。您可以做的是模拟对象c,这样在调用此方法时不会执行任何操作。如果模拟了c,请确保有方法通过setter或构造函数注入将此模拟依赖项分配给类a。