【发布时间】:2017-11-16 11:02:20
【问题描述】:
我正在对 Spring Boot 应用程序进行一些集成测试。
通常我用来开发的集成测试是关于应用程序域的,不涉及任何外部服务。 由于这次我需要对同时使用数据库和 SDK 调用的外部服务的服务进行集成测试,因此我尝试执行以下操作:
@RunWith(PowerMockRunner::class)
@SpringBootTest
@PowerMockRunnerDelegate(SpringRunner::class)
@PrepareForTest(McpProductService::class)
class MyServiceIntegration {
@Mock
private ExternalService externalService;
@Autowired
@InjectMocks
private MyServiceImpl myService;
@Test
public void thisTestShouldWork() {
...
}
}
让我困惑的是:我应该如何声明myService 属性?通常当我在单元测试中使用 Mockito + PowerMock 时,我通常会测试实现,而不是整个 Service Interface + Spring Injection。但是如果我只使用它的实现而不是接口,我就不能使用@Autowired。
我面临的这个问题有什么最佳实践吗?
【问题讨论】:
标签: java testing spring-boot mockito powermock