Junit测试在Jenkins Gradle构建中失败但在本地没有

时间:2016-04-20 13:45:10

标签: jenkins gradle junit mockito

我和詹金斯有一个奇怪的情况......我们刚开始在我的工作中使用Gradle作为一个项目,当我用JUnit在本地运行测试时一切都很好。但是当jenkins为分支“A”的构建运行这些测试时,由于断言(总是相同的测试),只有一个测试失败。

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());
}

更奇怪的是,当我从分支“A”创建分支“B”时,在jenkins上创建构建时,所有测试都会成功。

我做了一些研究并尝试强制进行其他构建,清除当前工作区并重新创建作业,但它不起作用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我过去遇到过类似的问题,这是由于junits测试的运行顺序。例如,一个测试修改了一个对象的状态,但是你没有看到它的影响,直到测试以不同的顺序运行,并且测试意外失败。您发布的问题中没有足够的代码来判断这是否确实如此,但我建议您检查运行测试的顺序,并查看您用来确定是否存在的对象这些物体被“弄脏”的状态存在问题。