@SpringBootTest(classes = TestConfig.class)
class ServiceIntegTest {
}
class TestConfig {
@MockBean
RandomExecutor randomExecutor
}
我想在ServiceIntegTest
类中使用RandomExecutor
模拟bean,怎么做?
我不是在嘲笑TestConfig
类本身的bean方法,因为在ServiceIntegTest
类中有各种测试,其中RandomExecutor
的方法必须以不同的方式表现。
您使用MockBean就像使用@Mock
一样,它只是被注入到您正在用于测试的spring上下文中。
@SpringBootTest
class ServiceIntegTest {
@MockBean RandomExecutor randomExecutor;
// this service gets autowired from your actual implementation,
// but injected with the mock bean you declared above
@Autowired
YourService underTest;
@Test
void verifyValueUsed() {
final int mockedValue = 5;
when(randomExecutor.getThreadCount()).thenReturn(mockedValue);
int result = underTest.getExecutorThreads();
assertThat(result).isEqualTo(mockedValue);
}
@Test
void verifyExecutorCalled() {
underTest.performAction("argument");
verify(randomExecutor).executorMethod("argument");
}
}
您不必在配置中设置@MockBean
,您必须在测试类中这样做。然后,您可以在一些测试类中模拟它,并在其他测试类中使用真实实例。
看看@MockBean
的基本用法:https://www.infoworld.com/article/3543268/junit - 5 -教程部分- 2单元-测试- spring mvc - 5. - junit html