我和詹金斯有一个奇怪的情况......我们刚开始在我的工作中使用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上创建构建时,所有测试都会成功。
我做了一些研究并尝试强制进行其他构建,清除当前工作区并重新创建作业,但它不起作用。
感谢您的帮助!
答案 0 :(得分:0)
我过去遇到过类似的问题,这是由于junits测试的运行顺序。例如,一个测试修改了一个对象的状态,但是你没有看到它的影响,直到测试以不同的顺序运行,并且测试意外失败。您发布的问题中没有足够的代码来判断这是否确实如此,但我建议您检查运行测试的顺序,并查看您用来确定是否存在的对象这些物体被“弄脏”的状态存在问题。