Java 在其他类中不使用带参数的非void方法

Java 在其他类中不使用带参数的非void方法,java,junit,mockito,Java,Junit,Mockito,目前,我正在为aClass中的meth1创建JUnit测试用例。但是,我不想在bClass中调用meth2,只想在aClass中执行busslogic。类aClass和bClass是固定的-我不能更改它们的代码 我用Mockito和PowerMock尝试了很多事情,比如@InjectMocks和doNothing,但是当我在aClass中调用meth1时,总是调用meth2。我能做些什么来解决这个问题?PowerMock拯救: public class aClass { public St

目前,我正在为aClass中的meth1创建JUnit测试用例。但是,我不想在bClass中调用meth2,只想在aClass中执行busslogic。类aClass和bClass是固定的-我不能更改它们的代码


我用Mockito和PowerMock尝试了很多事情,比如@InjectMocks和doNothing,但是当我在aClass中调用meth1时,总是调用meth2。我能做些什么来解决这个问题?

PowerMock拯救:

public class aClass {
   public String meth1() {
      bClass b = new bClass();
      b.meth2();// I don't want to call this method
      //buss logic
   }
}

public class bClass {
   public String meth2() {
      // some logic
   } 
}

阅读更多内容

因为不能将BClass注入AClass,所以需要使用比Mockito更强大的工具,它可以模拟构造函数。PowerMockito可以做到,好吧。你不能模拟局部变量。创建实例成员或将其传递给方法。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ aClass.class })
public class TestPowerMock {

    @Test
    public void shouldBlaBla() throws Exception {
        // you can do whatever you want on bMock, because it's a mock
        bClass bMock = PowerMockito.mock(bClass.class);
        // when aClass instantiates bClass, the mock will be returned
        PowerMockito.whenNew(bClass.class).withNoArguments().thenReturn(bMock);
        // your test
        aClass a = new aClass();
        a.meth1();
    }
}