Получено событие сбоя для теста с неизвестным идентификатором, Gradle, Junit4, SystemRules

При запуске теста gradle я получаю сообщение об ошибке

      Caused by: java.lang.IllegalArgumentException: Received a failure event for test with unknown id '16.3'. Registered test ids: '[16.1, 16.2, :app:test]

Эта ошибка возникает только тогда, когда тесты включают функции, добавленные системными правилами. Например

      @Test
    void sysOutTest() {
        System.out.print("hello world");
        assertEquals("hello world", systemOutRule.getLog());
    }

Мой файл build.gradle выглядит так:

      plugins {
    
    id 'application'
    id 'jacoco'
}

repositories {
    
    jcenter()
}

dependencies {

    

    testImplementation 'com.github.stefanbirkner:system-rules:1.19.0'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.0'
    testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.1.0'

}

application {
    // Define the main class for the application.
    mainClass = 'package.App'
}

test {
    useJUnitPlatform()
    //scanForTestClasses false (This was in here and is commented out as originaly gradle was not detecting tests that were in the style of Junit4)
    finalizedBy jacocoTestReport
}

run{
    standardInput = System.in
}

jacocoTestReport {
    reports {
        html.enabled = true
        csv.enabled = true
    }
}

sourceSets {
    test {
        java {
            srcDir 'test'
        }
    }
    main {
        java {
            srcDir 'main'
        }
    }
}

Чтобы было ясно, тесты работают нормально, когда в файле нет тестов, использующих SystemRules.

Я (по глупости) уже написал все свои тесты с использованием SystemRules, поэтому я бы предпочел найти способ заставить его работать, а не начинать с нуля.

Спасибо за любую помощь

1 ответ

Мне просто нужно было опубликовать перед тестами. Все остальные тесты, в которых не использовались системные правила, были общедоступными.

      @Test
    public void sysOutTest() {
        System.out.print("hello world");
        assertEquals("hello world", systemOutRule.getLog());
    }
Другие вопросы по тегам