我想在预集成阶段启动服务器并进行一些集成测试。问题是它只在集成测试后才开始。
我的pom看起来像这样:
plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>start-server</id>
<phase>pre-integration-test</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<executableDependency>
<groupId>mygroup</groupId>
<artifactId>MyServer-Server</artifactId>
</executableDependency>
<mainClass>mygroup.myServer.MyServer</mainClass>
<arguments>
<argument>-batch</argument>
<argument>-port</argument>
<argument>1024</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
我的Test是一个名为TestMyServerIT
的jUnit-Case,位于src / test / main中,如下所示:
public class TestMyServerIT {
private Socket server;
@Test
public void testConnection() {
try {
server = new Socket("localhost", 1024);
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果尝试mvn验证,会因连接被拒绝而失败 但是当我运行服务器时它会成功。
如果我评论测试,在“mvn verify”之后有一个服务器在端口1024上运行,因为我还没有在pom文件中停止它。我可以在这个端口上访问它,只是没有及时进行测试。
如何在测试之前断言服务器是否已启动?
我似乎还有另一个需要先解决的问题。 Failsafe-plugin没有启动验证,如果我尝试failafe,它说它缺少xml:验证