Gradle测试在本地失败,但在CI服务器上成功

时间:2019-06-22 12:16:38

标签: java gradle junit continuous-integration

我有一个设置了JUnit单元测试的Gradle Java项目。有些测试应该失败。他们在我的计算机上执行此操作,但在CI服务器上成功执行,没有错误。

自然的第一个假设是CI服务器配置一定有问题。但是,在无法使它在CodeShip上失败之后,我在Travis上进行了尝试,并得到了相同的结果。在CodeShip中,奇怪的是日志告诉我它根本没有找到任何测试(因此,当然没有失败的测试)。

测试文件位于git repo上(不忽略),所有脚本(无论是Gradle还是CI服务器配置)都非常简单。所以我目前不知道这是什么问题。例如,这是.travis.yml:

language: java
jdk:
  - oraclejdk8

这是build.gradle

plugins {
    id 'java'
}

group 'net.roughdesign.ajiwa'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
}

test {
    useJUnitPlatform()
}

什么可能导致这种行为?

1 个答案:

答案 0 :(得分:1)

错误是混淆了JUnit版本。

JUnit 4

// in the Gradle file
testCompile group: 'junit', name: 'junit', version: '4.12'

// in Java code
import org.junit.Test;

JUnit 5

// in the Gradle file
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'

// in Java code
import org.junit.jupiter.api.Test;

发生了什么

  • 我导入了两个版本
  • 我在JUnit 4中编写了测试(使用import org.junit.Test;
  • CI服务器默认使用JUnit 5

因此,确实没有 JUnit 5 测试。