报告@TestFactory的测试用例名称

问题描述 投票:0回答:1

我有一个Junit @TestFactory方法,我想创建一个所有测试用例名称的报告。这在Eclipse中很容易看到,但我还想在命令行对名称进行一些文本处理。有什么方法可以让Surefire在命令行上报告这个吗?

maven-surefire-plugin junit5
1个回答
1
投票

您可以实现并注册自定义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());
        }
    }

}

以上示例可以通过Java的ServiceLoader机制自动注册,方法是将以下内容放在src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener中(如果要发布库,则在src/main/resources下):

my.example.package.DynamicTestListener
© www.soinside.com 2019 - 2024. All rights reserved.