【发布时间】:2020-06-14 09:59:50
【问题描述】:
我在这里尝试监视一个方法,因为它从外部调用另一个方法。我只需要模拟外部方法。下面是我对我的项目类型的遗留项目的模拟
public class TestClass {
public int dependencyOne(){
System.out.println("Need to mock Externally ");
return 100;
}
public int methodNeedTobeTested(int a){
int c = new AnotherClass().dependencyTwo();
return a + this.dependencyOne() + c;
}
}
public class AnotherClass {
public int dependencyTwo(){
System.out.println("Need to mock externally");
return 100;
}
}
这是我的测试用例
public class TestClassTest {
@InjectMocks
TestClass testClass;
@Mock
AnotherClass anotherClass;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Rule
public MockitoRule initRule = MockitoJUnit.rule();
@Test
public void methodNeedTobeTested() {
testClass = Mockito.spy(new TestClass());
Mockito.when(anotherClass.dependencyTwo()).thenReturn(10);
Mockito.doReturn(10).when(testClass).dependencyOne();
assertEquals(testClass.methodNeedTobeTested(10),30);
}
}
我的输出:
需要在外部模拟
java.lang.AssertionError: 预计:30 实际:120
缺少什么?
依赖:
byte-buddy-1.10.11.jar
cglib-nodep-3.2.9.jar
hamcrest-core-1.3.jar
javassist-3.24.0-GA.jar
junit-4.12.jar
mockito-all-1.10.19.jar
mockito-core-2.23.0.jar
objenesis-3.0.1.jar
【问题讨论】: