将Junit Pioneer @Issue注解信息添加到Gradle测试报告

toe95027  于 2023-04-06  发布在  其他
关注(0)|答案(1)|浏览(181)

我把来自JUnit Pioneer library的@Issue注解放在我的测试套件上。看看下面的代码片段:

@Test
@Issue("TY-5232")
void shouldReturn200IfTryingToCreateNewAccountWithAvailableName() {...}

另外,我正在使用Gradle Test Report生成测试结果的HTML报告。我想知道是否可以将有关问题的信息添加到Gradle测试报告中?我想看看哪个测试属于特定任务。
也许我需要注册一些回调,但我没有找到具体的方法来做到这一点。

ijnw1ujt

ijnw1ujt1#

我设法以不同的方式解决问题。
首先,我创建了自定义的IssueProccessor,它在JUnit Pioneer库中实现了相应的接口。

public class SimpleIssueProcessor implements IssueProcessor {

    @Override
    public void processTestResults(List<IssueTestSuite> issueTestSuites) { 
        /* this callback receives information about all tests marked with `@Issue` annotation */ 
    }

}

然后我将其注册为Java ServiceLoader,以便JUnit在其生命周期中使用该类的示例。为了做到这一点,我创建了一个文件src/test/resources/META-INF/services/org.junitpioneer.jupiter.IssueProcessor,内容如下:

com.my.company.SimpleIssueProcessor

这是SimpleIssueProcessor实现的完全限定名。
最后,我创建了另一个文件src/test/resources/META-INF/services/org.junit.platform.launcher.TestExecutionListener,其内容为:

org.junitpioneer.jupiter.issue.IssueExtensionExecutionListener

这是JUnit Pioneer库提供的JUnit TestExecutionListener,它将信息委托给IssueProcessor实现。
基本上就是这样,现在您可以处理SimpleIssueProcessor回调中的信息,并构建您想要的任何文档。

相关问题