Gradle тесты локально проваливаются, но успешно на CI - PullRequest
0 голосов
/ 22 июня 2019

У меня есть проект Gradle Java с модульным тестированием JUnit. Есть некоторые тесты, которые должны провалиться. Они делают это на моей машине, но на CI-серверах это происходит без ошибок.

Естественное первое предположение - что-то не так с конфигурацией CI-сервера. Однако, после того, как я не смог заставить его выйти из строя на CodeShip, я попробовал это с Трэвисом и получил тот же результат. В 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 Ответ

1 голос
/ 22 июня 2019

Ошибка заключалась в смешении версий 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 действительно не было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...