Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jenkins构建在关闭Spring应用程序上下文时失败_Java_Spring_Jenkins_Ant_Junit - Fatal编程技术网

Java Jenkins构建在关闭Spring应用程序上下文时失败

Java Jenkins构建在关闭Spring应用程序上下文时失败,java,spring,jenkins,ant,junit,Java,Spring,Jenkins,Ant,Junit,为什么在Spring应用程序上下文中运行失败的测试会导致我的Jenkins构建崩溃? 我正在使用Ant构建我的应用程序,并在Jenkins上运行JUnit测试 在Eclipse中运行Ant构建时,无论测试是否失败,我都没有遇到任何问题 但是,当我尝试使用Jenkins运行构建时,构建失败,并且在完成JUnit测试后没有记录异常: ... [junit] INFO: Executing Stored Procedure with parameters {@pivoting=1, @ignoreRe

为什么在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
上面的输出是意外的,因为我已经将构建配置为在测试失败时不稳定,并且我已经将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是否在测试失败时无法关闭应用程序上下文,因为在“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

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

如果测试失败,那么Jenkins默认情况下会使构建失败。构建的稳定性是通过最近有多少构建失败来计算的。所以,如果失败的测试没有导致构建失败,那么测试将不会影响稳定性,并且你不能向人们发送电子邮件,告诉他们构建失败了,什么提交导致了构建失败,什么测试失败了,这是非常有用的。

我的build.xml文件非常广泛,所以我只会在实际需要时发布它