【问题标题】:Using Mockito.when method for method that calls other method in return对调用其他方法的方法使用 Mockito.when 方法作为回报
【发布时间】:2020-04-16 09:14:58
【问题描述】:

我正在尝试测试我的课程,但我的 Mockito.when() 似乎不起作用,我得到了一个“示例”而不是“另一个示例”。 有任何想法吗?

public class ExampleClass {
    public String create(String example){
         return doSth();
    }

    public String doSth(){
         return "example";
    }
}
public class ExampleClassTest {
    @Mock
    ExampleClass exampleClassMock;

    public void createTest(){
        when(exampleClassMock.doSth()).thenReturn("another example");

        assertEquals(exampleClassMock.create("x"), "another example");
    }
}

【问题讨论】:

    标签: java unit-testing junit mockito


    【解决方案1】:

    首先,不要忘记将@Test 注释放在您的测试方法上,并将@RunWith(MockitoJUnitRunner.class) 放在测试类上。

    其次,如果您需要测试某个类的方法,并且在其中调用了您要模拟的同一类的另一个方法,那么您需要使用@Spy:

    @RunWith(MockitoJUnitRunner.class)
    public class ExampleClassTest {
    
        @Spy
        ExampleClass exampleClassMock;
    
        @Test
        public void createTest() {
            when(exampleClassMock.doSth()).thenReturn("another example");
    
            assertEquals(exampleClassMock.create("x"), "another example");
        }
    }
    

    请参阅docs 进行间谍活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-14
      • 2011-09-03
      • 2014-12-14
      • 2017-06-25
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      相关资源
      最近更新 更多