如何测试是否在要测试的方法内部创建的对象上调用了方法

时间:2019-07-04 11:39:04

标签: java unit-testing testing junit

是否可以在不修改Class类的情况下测试“ innerMethod”的调用?

在“ someCondition”的两种情况下,我都需要在单独的类中进行单元测试。

问题在于该方法无效,因此我无法使用返回类型。唯一的方法是检查是否调用了“ innerMethod”。

我当时想使用Mokito进行验证,但是在运行时创建的对象的方法内部调用了此方法。

任何建议都是最欢迎的。

public class Class {

     public void outerMethod(outerObj) {

          if(someCondition) {

               Object innerObj = new Object();
               innerObj.innerMethod(outerObj); 

          } else {

               //other code
          }    
}

1 个答案:

答案 0 :(得分:0)

您可以使用Mockito::timesMockito::verify方法来实现。

测试设置如下:

@InjectMocks
private SomeService service;

@Mock
private SomeHelper helper;

,然后以下列方式测试帮助程序中的某些方法:

@Test
public void testInnerHasBeenCalledOnce() throws Exception {

    service.outherMethodName(someParam);

    Mockito.verify(helper, Mockito.times(1)).innerMethodName(someParamSecond);
}