我正在编写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
命令停止它,但是此解决方案与平台无关。还有其他方法可以进行集成测试吗?
P.S.我正在使用dropwizard v0.7.0-SNAPSHOT。
最佳答案
它很旧,但也许有人需要此信息。对于集成测试,这是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