Java 在其他类中不使用带参数的非void方法
目前,我正在为aClass中的meth1创建JUnit测试用例。但是,我不想在bClass中调用meth2,只想在aClass中执行busslogic。类aClass和bClass是固定的-我不能更改它们的代码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
我用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();
}
}