为什么在Spring应用程序上下文中运行失败的测试导致我的Jenkins构建崩溃?
我正在使用Ant构建我的应用程序并在Jenkins上运行JUnit测试。
我在Eclipse中运行Ant构建时遇到任何问题,无论是否有失败的测试。
但是,当我尝试使用Jenkins运行构建时,构建失败,而在完成运行JUnit测试时没有记录异常:
...
[junit] INFO: Executing Stored Procedure with parameters {@pivoting=1, @ignoreReference=0}
[junit] Tests run: 7, Failures: 1, Errors: 0, Time elapsed: 7.831 sec
[junit] Sep 22, 2015 4:23:57 PM org.springframework.context.support.AbstractApplicationContext doClose
[junit] INFO: Closing org.springframework.context.support.GenericApplicationContext@8a590d1:
startup date [Tue Sep 22 16:23:52 BST 2015]; root of context hierarchy
BUILD FAILED
E:\Jenkins\jobs\workspace\AntBuilds\build.xml:336: Tests failed
Total time: 16 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Recording test results
Finished: FAILURE
上面的输出是意外的,因为我已经将构建配置为在测试失败时简单地为UNSTABLE,并且我已经配置了JaCoCo报告,以便在测试运行后发布。
通常我会看到更像的东西:
[junit] INFO: Closing org.springframework.context.support.GenericApplicationContext@6a38e598: display name [org.springframework.context.support.GenericApplicationContext@6a38e598]; startup date [Tue Sep 22 16:01:10 BST 2015]; root of context hierarchy
[junit] Tests FAILED
[jacoco:report] Loading execution data file E:\Jenkins\jobs\jacoco.exec
[jacoco:report] Writing bundle 'Coverage Report' with 117 classes
...etc
删除失败的测试允许构建正常继续:
BUILD SUCCESSFUL
Total time: 36 seconds
Archiving artifacts
Recording test results
[JaCoCo plugin] Collecting JaCoCo coverage data...
[JaCoCo plugin] **/**.exec;**/dist/WEB-INF/classes;**/src; locations are configured
[JaCoCo plugin] Number of found exec files for pattern **/**.exec: 1
[JaCoCo plugin] Saving matched execfiles: E:\Jenkins\jobs\myJob\jacoco.exec
... etc
到目前为止我的回答
我已成功在Jenkins上构建其他应用程序。不同之处在于这些测试标有Spring应用程序上下文:
@ContextConfiguration(locations="file:WEB-INF/MyJob-servlet.xml")
@RunWith(SpringJUnit4ClassRunner.class)
我一直想知道Jenkins是否在测试失败时无法关闭应用程序上下文,因为这条线路出现在“失败的构建失败”之前。消息:
Closing org.springframework.context.support.GenericApplicationContext@8a590d1:
startup date [Tue Sep 22 16:23:52 BST 2015]; root of context hierarchy
我需要升级到:
这种预感是否正确?如果是这样,这是Jenkins / Spring /不兼容版本的错误,还是我的实现不正确?
答案 0 :(得分:0)
如果测试失败,那么Jenkins默认会失败。构建的稳定性是根据最近构建失败的程度来计算的。因此,如果测试失败并没有导致您的构建失败,那么测试就不会对稳定性产生影响,那么您就不能像电子邮件那样做一些事情,那就是构建失败了,提交的内容是什么,以及测试是什么失败,这非常有用。