我对 Jenkins 有一种奇怪的情况......我们刚刚开始在我的工作中使用 Gradle 进行项目,当我使用 JUnit 在本地运行测试时,一切都很好。但是当 Jenkins 为分支“A”的构建运行这些测试时,只有一个测试因为断言而失败(总是相同的测试)。
org.junit.ComparisonFailure:预期:“E[ZZ0530]Z”但为:“E[SY5654]Z”
看起来模拟没有注入(inject),或者模拟忽略了“何时”模拟语句。
这是测试:
@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测试的运行顺序造成的。例如,一个测试修改了一个对象的状态,但是直到测试以不同的顺序运行并且测试意外失败,您才看到它的效果。您发布的问题中没有足够的代码来判断是否确实如此,但我建议检查运行测试的顺序,并查看您使用的对象以确定是否存在这些对象的状态被“弄脏”的问题。
关于jenkins - Junit 测试在 Jenkins Gradle 构建中失败,但不是在本地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36745818/