我和詹金斯有一个奇怪的情况。。。在我的工作中,我们刚刚开始将Gradle用于一个项目,当我使用JUnit在本地运行测试时,一切都很好。但是,当jenkins为分支"A"的构建运行这些测试时,只有一个测试因为断言而失败(总是相同的测试)。
org.unit.ComparisonFailure:应为"E[ZZ0530]Z",实际为:"E[SY5654]Z"
看起来mock没有被注入,或者mock忽略了"when"mocking语句。
以下是测试:
@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上创建构建时,所有测试都成功了。
我做了一些研究,试图强制进行另一个构建,删除当前的工作空间并重新创建工作,但没有成功。
谢谢你的帮助!
我过去也遇到过类似的问题,这是由于junits测试的运行顺序造成的。例如,一个测试修改了一个对象的状态,但直到测试以不同的顺序运行,测试意外失败,你才会看到它的效果。您发布的问题中没有足够的代码来判断是否确实如此,但我建议您检查测试的运行顺序,并查看您正在使用的对象,以确定这些对象的状态是否存在"脏"问题。