Имена тестовых случаев отчета для @TestFactory - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть метод Junit @TestFactory, и я хотел бы создать отчет обо всех именах тестовых примеров.Это легко увидеть в Eclipse, но я также хотел бы выполнить некоторую обработку текста в именах в командной строке.Есть ли способ, которым Surefire может сообщить об этом в командной строке?

1 Ответ

0 голосов
/ 27 февраля 2019

Вы можете реализовать и зарегистрировать пользовательский TestExecutionListener .

Например, вы можете реализовать что-то похожее на следующее.

package my.example.package;

import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;

import org.junit.platform.engine.TestDescriptor.Type;
import org.junit.platform.engine.TestExecutionResult;

public class DynamicTestListener implements TestExecutionListener {

    private final Set<TestIdentifier> dynamicTests = Collections.synchronizedSet(new LinkedHashSet<>());

    @Override
    public void dynamicTestRegistered(TestIdentifier testIdentifier) {
        if (testIdentifier.getType() == Type.TEST) {
            this.dynamicTests.add(testIdentifier);
        }
    }

    @Override
    public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
        if (this.dynamicTests.contains(testIdentifier)) {
            System.out.println(testIdentifier.getDisplayName());
        }
    }

}

Приведенный выше пример может бытьавтоматически регистрируется с помощью механизма ServiceLoader Java, помещая в src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener (или в src/main/resources, если вы публикуете библиотеку) следующее:

my.example.package.DynamicTestListener
...