显示与 @MockBean 带注释的模拟的交互

Mar*_*fer 5 testing spring mockito

在 Spring 应用程序中,可以使用模拟 bean 编写测试,这些模拟 bean 默认情况下会自动装配,并且可以使用常用的 Mockito 方法进一步自定义。为此,使用@MockedBean注释。但是,当仅使用 Mockito 而不使用 Spring 时,可以配置模拟来打印所有交互,请参阅如何使用 Mockito 显示模拟上的所有调用。使用模拟 bean 也可以进行这种调试吗?

Mar*_*fer 3

Sprint 没有原生方法,但可以使用mockingDetails(<some mock>)Mockito 的方法来检索MockingDetails模拟,然后打印交互。将调试放在 @After 注解的方法中,以便每次都显示它,即使测试失败也是如此。

import static org.mockito.Mockito.mockingDetails;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;
import com.fasterxml.jackson.core.JsonProcessingException;

@RunWith(SpringRunner.class)
@SpringBootTest(
public class MyTest {
    @MockBean
    LoginDAO loginDaoMock;

    @Test
    public void xyz()  {
    // some test
    }

    @After
    public void showInteractions() {
        System.out.println(mockingDetails(loginDaoMock).getInvocations());
    }
}
Run Code Online (Sandbox Code Playgroud)