我有一个Java项目,我想在其中添加一个单元测试maven builds
一个示例项目(shaded-jar
),运行这个创建的jar并评估一个写入的输出文件。
我不确定在单元测试中是否可以实现这一点?
过去,当单元测试实际通过时我遇到了问题,但是一旦你创建了一个阴影jar,由于一些似乎只发生在JAR文件中的依赖性问题而导致事情中断。
我正在寻找一些keywords
甚至更好的例子,如何做到这一点或如何实现这种集成测试。
答案 0 :(得分:1)
根据@khmarbaise的评论:
将maven-failsafe-plugin添加到您的构建中以执行集成测试:
func setConstrain()
{
self.imageConstrain.constant = -10
self.topConstraints.constant = 10
self.bottomConstraints.constant = -10
self.leadingConstraints.constant = 10
self.layoutIfNeeded()
}
通过maven-exec-plugin运行您的jar。例如:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
至少运行maven build至<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<workingDirectory>${project.build.directory}</workingDirectory>
<commandlineArgs>-jar ${project.build.finalName}.jar</commandlineArgs>
</configuration>
</execution>
</executions>
</plugin>
阶段,例如:verify
。
重要说明:
mvn clean verify
。由于async=true
默认为asyncDestroyOnShutdown
,因此应在构建结束时自动停止。如果您的jar分叉,您应该在集成后测试阶段通过您自己的手动停止命令停止分叉过程。