Получено событие сбоя для теста с неизвестным идентификатором, 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());
}