我用Java编写了一个通过套接字进行通信的模块。我想编写一个测试发送和接收的单元测试。
为了真正测试系统,我想将发送者放在一个JVM中,将接收者放在另一个JVM中并一起测试它们。
从我在这里和各种博客文章中读到的内容来看,这不是真正的单元测试,它是集成测试。好的,很好,但我仍然希望它成为构建过程的一部分。
是否有官方推荐的方法从Junit测试用例中启动第二个JVM?如果没有,是否有另一个为此设计的标准测试框架?
答案 0 :(得分:1)
我在构建中使用了一些shell脚本。不知道如何验证结果,但无论在自动构建中运行什么Maven都可以检查一些输出文件或其他东西。在build / plugins下我这样做:
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>1.3.2</version>
<executions>
<execution>
<id>Validate English and Term Customization</id>
<phase>test</phase>
<goals><goal>exec</goal></goals>
<configuration>
<executable>${project.basedir}/validate.sh</executable>
<workingDirectory>${project.basedir}</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
您基本上必须创建一个单独的项目来通过网络部署和测试代码。这在很多方面都会很痛苦。你可能会认为“集成测试”和“多方面的痛苦”在某种程度上是同义词。
保持集成测试的最新状态可能是进行更好的单元测试的世界最佳灵感。我仍然尽可能地尝试单元测试。
即使你有一个完整的独立集成测试项目,你也可能希望每周一次/每周运行一次,而不是每次办理登机手续。