关闭springapplicationcontext时,Jenkins构建失败



为什么在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:JenkinsjobsworkspaceAntBuildsbuild.xml:336: Tests failed
Total time: 16 seconds
Build step 'Invoke Ant' marked build as failure
Archiving artifacts
Recording test results
Finished: FAILURE

上面的输出是出乎意料的,因为我已经将构建配置为在测试失败时不稳定,并且我已经配置了一个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:Jenkinsjobsjacoco.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:JenkinsjobsmyJobjacoco.exec
... etc

我的答案到目前为止

我已经成功地在Jenkins上构建了其他应用程序。不同之处在于这些测试是用Spring应用程序上下文标记的:

@ContextConfiguration(locations="file:WEB-INF/MyJob-servlet.xml")
@RunWith(SpringJUnit4ClassRunner.class)

我一直在想,当测试失败时,Jenkins是否未能关闭应用程序上下文,因为在"build failed"消息之前,这一行出现在失败的构建中:

Closing org.springframework.context.support.GenericApplicationContext@8a590d1: 
  startup date [Tue Sep 22 16:23:52 BST 2015]; root of context hierarchy

我需要升级到:

  • junit - 4.4
  • spring-integration-test-2.1.3.RELEASE

这个预感正确吗?如果是这样,这是一个bug与Jenkins/Spring/不兼容的版本,还是我的实现不正确?

如果测试失败,那么Jenkins默认会使构建失败。构建的稳定性是通过最近有多少构建失败来计算的。因此,如果失败的测试没有导致你的构建失败,那么测试就不会对稳定性产生影响,然后你就不能做这样的事情,比如给人们发邮件说构建失败了,什么提交导致了失败,什么测试失败了,这是非常有用的。

相关内容

  • 没有找到相关文章

最新更新