2016-04-20 194 views
1

Jenkins中有一个奇怪的情况......我刚开始在我的工作中使用Gradle作为项目,当我在JUnit本地运行测试时,一切正常。但是,当jenkins为分支“A”的构建运行这些测试时,由于断言(总是相同的测试),只有一个测试失败。Junit测试在Jenkins Gradle版本中失败,但本地不能

org.junit.ComparisonFailure:预计: “E [ZZ0530] Z” 不过是: “E [SY5654] Z”

它看起来像模仿不注入或模拟被忽略的 “当”嘲笑声明。

下面是测试:

@Test 
public void testEvent() { 
    Date eventDateTime = TimeUtils.parseDate("2013-05-30 00:00:00"); 
    event.setEventDatetime(eventDateTime); 

    //Mocking the prefix return 
    Mockito.when(eventCodeHelperMock.getEventCodePrefixFromEvent(event)).thenReturn("EZZ"); 

    //Tested methode 
    eventWrapper.setSuffix("Z"); 

    // Event code = prefix + date + suffix 
    assertEquals("EZZ0530Z", event.getEventCode()); 
} 

什么是很多奇怪的是,当我创建一个分支“B”从分支上詹金斯在创建时所建的“A”所有测试成功。

我已经做了一些研究,并试图强制其他构建,消灭当前的工作空间和重新创建工作,但它没有奏效。

感谢您的帮助!

回答

0

我以前遇到过类似的问题,这是由于junits测试运行的顺序。例如,一个测试会修改一个对象的状态,但是您不会看到这个效果,直到测试以不同的顺序运行,并且测试意外失败。在您发布的问题中没有足够的代码来说明是否确实如此,但我会建议检查运行测试的顺序,并且还要查看您正在使用的对象以确定是否存在这些物体的状态是“变脏”的问题。

+0

感谢您的快速回答,它真的帮助!实际上,我正在使用沉重的遗留代码,这个测试甚至没有测试现在的类(不是真正的单元测试),有很多单例和非注入的依赖关系(就像你提到的那样,它改变了状态的对象)。我删除它,一切正常!再次感谢! –

+0

没问题,很高兴你解决它 – robjwilkins