【发布时间】:2019-06-22 12:16:38
【问题描述】:
我有一个使用 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()
}
什么可能导致这种行为?
【问题讨论】:
-
你确定测试真的是在 CI 上执行的吗?也许他们因为某种原因被跳过了。为什么你确定他们必须在 CI 上失败?您是否尝试过将和
assertTrue(false)放入测试中以确保它们确实失败了?可能您的测试或应用程序逻辑取决于时区或区域设置,因此只会在您的机器上失败,而不会在云中的 CI 上失败。 -
@britter 是的,一切都很好,我的错误是混淆了版本;我写了一个解释它的答案。尽管如此,还是感谢您的努力。
标签: java gradle junit continuous-integration