我正在编写dropwizard应用程序,我坚持使用集成测试。我试图在maven的pre-integration-test
阶段启动服务器而不是在post-integration-test
阶段停止它,但问题是我在使用maven-exec插件时丢失了java线程。
配置如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>create-and-run-dropwizard-test-server</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>target/my-server.jar</argument>
<argument>server</argument>
<argument>test-config.yml</argument>
</arguments>
</configuration>
</plugin>
使用它maven运行到pre-integration-test
阶段,然后在同一个线程中启动服务器。无论如何,我可以将其作为bash脚本运行,而不是使用kill -9
命令停止它,但此解决方案不依赖于平台。
还有其他方法可以进行集成测试吗? 附:我正在使用dropwizard v0.7.0-SNAPSHOT。
答案 0 :(得分:4)
它已经过时了,但也许有人需要这些信息。对于集成测试,这里是this link
的示例代码public class LoginAcceptanceTest {
@ClassRule
public static final DropwizardAppRule<TestConfiguration> RULE =
new DropwizardAppRule<TestConfiguration>(MyApp.class, resourceFilePath("my-app-config.yaml"));
@Test
public void loginHandlerRedirectsAfterPost() {
Client client = new Client();
ClientResponse response = client.resource(
String.format("http://localhost:%d/login", RULE.getLocalPort()))
.post(ClientResponse.class, loginForm());
assertThat(response.getStatus()).isEqualTo(302);
}
}
用于资源测试follow this link