jenkins - Junit 测试在 Jenkins Gradle 构建中失败,但不是在本地

标签 jenkins gradle junit mockito

我对 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/

相关文章:

java - 在java测试中强制执行assertj

gradle - 如何获取rootProject.name并将其提供给应用程序,测试和分发?

android - 如何使用 Gradle 解决模块中的循环依赖?

java - 找不到符号方法元工厂(Lookup,String,MethodType,MethodType,MethodHandle,MethodType)

java - 带有 RoboElectric 私有(private)方法的 PowerMockito 未被 mock

scala - intellij Junit 为 scala 生成测试类

svn - 从放在 SVN 上的 talend studio 导出 Talend 项目并从 Jenkins 构建它

jenkins - 如何获取 Jenkins 中所有宏的列表?

android - Jenkins 无法连接到安卓模拟器

jenkins - Jenkins 的 Gerrit 触发器安装