【发布时间】:2018-08-27 23:58:05
【问题描述】:
我正在使用一个 REST API,它使用带有 Spring Boot 的 Jersey(因此在 XML 或 Java 中没有特定的应用程序上下文)和 Spring Data JPA。
我想在 GET 和 POST 端点上编写单元测试,但是我不想启动 Web 服务器,因为它需要太长时间。
如果我使用 JerseyTest 我的 Spring Bean 不会加载到上下文中。
public class InMemoryContainerPackageTest extends
JerseyTestNg.ContainerPerClassTest {
@Override
protected TestContainerFactory getTestContainerFactory() {
return new InMemoryTestContainerFactory();
}
@Override
public Application configure() {
ResourceConfig config = new ResourceConfig()
.register(SpringLifecycleListener.class)
.register(RequestContextFilter.class)
.register(this)
.register(MyController.class)
.packages("com.my.service");
return config;
}
如果我使用SpringBootTest,它会启动一个大约需要 30 秒的 Web 服务器,理想情况下我希望我的所有测试在 5 秒内完成,否则开发人员将不会运行它们。
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class TestNGClass1 extends AbstractTestNGSpringContextTests {
我认为 MockMvc 不适用于 Jersey 端点。
【问题讨论】:
标签: spring-boot jersey testng