Java 项目构建在本地上,但在travis ci容器中失败

Java 项目构建在本地上,但在travis ci容器中失败,java,travis-ci,spark-java,Java,Travis Ci,Spark Java,首先,抱歉英语不好 我创建了spark spring()项目,以提供一种将spring上下文放入spark java框架的简单方法 我创建一个测试来检查服务器是否启动并返回一个值。在我的个人计算机上运行时,所有测试都正常运行,但在travis ci中,连接测试失败 本地输出: Running com.github.rascorp.spark.spring.ConsoleAppInitializerTest abr 14, 2016 12:46:01 PM org.springframework.

首先,抱歉英语不好

我创建了spark spring()项目,以提供一种将spring上下文放入spark java框架的简单方法

我创建一个测试来检查服务器是否启动并返回一个值。在我的个人计算机上运行时,所有测试都正常运行,但在travis ci中,连接测试失败

本地输出:

Running com.github.rascorp.spark.spring.ConsoleAppInitializerTest
abr 14, 2016 12:46:01 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFORMAÇÕES: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@48140564: startup date [Thu Apr 14 12:46:01 BRT 2016]; root of context hierarchy
abr 14, 2016 12:46:01 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFORMAÇÕES: Loading XML bean definitions from class path resource [application-context-spark-spring-test.xml]
abr 14, 2016 12:46:01 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFORMAÇÕES: Loading XML bean definitions from class path resource [application-context-spark-spring.xml]
[Thread-1] INFO org.eclipse.jetty.util.log - Logging initialized @663ms
[Thread-1] INFO spark.webserver.JettySparkServer - == Spark has ignited ...
[Thread-1] INFO spark.webserver.JettySparkServer - >> Listening on 0.0.0.0:4568
[Thread-1] INFO org.eclipse.jetty.server.Server - jetty-9.3.2.v20150730
[Thread-1] INFO org.eclipse.jetty.server.ServerConnector - Started ServerConnector@55d35d9b{HTTP/1.1,[http/1.1]}{0.0.0.0:4568}
[Thread-1] INFO org.eclipse.jetty.server.Server - Started @734ms
[main] INFO spark.webserver.JettySparkServer - >>> Spark shutting down ...
[main] INFO org.eclipse.jetty.server.ServerConnector - Stopped ServerConnector@55d35d9b{HTTP/1.1,[http/1.1]}{0.0.0.0:4568}
[main] INFO spark.webserver.JettySparkServer - done
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.025 sec - in com.github.rascorp.spark.spring.ConsoleAppInitializerTest
Travis CI输出(您可以在此处检查生成:):

运行com.github.rascorp.spark.spring.ConsoleAppInitializerTest
2016年4月14日下午3:42:15 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息:刷新org.springframework.context.support。ClassPathXmlApplicationContext@6fffcba5:启动日期【2016年4月14日星期四15:42:15 UTC】;上下文层次结构的根
2016年4月14日下午3:42:15 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息:从类路径资源[application context spark spring test.XML]加载XMLBean定义
2016年4月14日下午3:42:15 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息:从类路径资源[application context spark spring.XML]加载XML bean定义

测试运行:2,失败:1,错误:0,跳过:0,经过的时间:0.876秒Travis CI输出表示一个测试失败。Travis CI不一定在与本地计算机相同的条件下运行。看看你能做些什么让这一个测试在两台机器上都通过。毕竟,如果你不能让它通过特拉维斯,你怎么知道它将工作在任何其他计算机,但你自己的?有关调试特定问题的帮助,请参阅。

我发现了问题

出现此问题的原因是测试运行时服务方法不可用。要修复此问题,我需要在运行测试之前调用以下代码

/**
 * Waits for the spark server to be initialized.
 * If it's already initialized will return immediately
 */
Spark.awaitInitialization();

我知道有一次考试不及格。这就是重点!我只是不知道为什么。。。在这个测试中,我只调用spark创建的服务并检查返回。这是失败的代码:为了帮助我找到问题,我将logback放在项目中,结果构建在这里:代码似乎还可以。。。我真的不明白为什么trevis ci的测试失败了。
/**
 * Waits for the spark server to be initialized.
 * If it's already initialized will return immediately
 */
Spark.awaitInitialization();