【问题标题】:How to get repetition count in a junit 5 extension如何在junit 5扩展中获得重复计数
【发布时间】:2020-07-30 07:58:19
【问题描述】:

我尝试编写自己的 JUnit 5 扩展,提供一些关于测试持续时间的简单信息。 我也想打印出重复信息,但是如何在扩展中访问这些信息? 有没有什么简单的方法,而不是反射或者写入并解析数字到显示名称?

简单示例:

@ExtendWith(TimingExtension.class)
public class MyTestClass {
    @RepeatedTest(value = 5, name = "{currentRepetition}/{totalRepetitions}")
    public void myTest(TestInfo testInfo, RepetitionInfo repInfo) {
        // do some work here...
    }
}


public class TimingExtension implements AfterTestExecutionCallback {
    @Override
    public void afterTestExecution(ExtensionContext context) throws Exception {
        if(context.getRequiredTestMethod().getDeclaredAnnotation(RepeatedTest.class) != null) {
            System.out.println("This was test X of Y"); // how to get currentRepetition and totalRepetitions here?
        }
    }
}

【问题讨论】:

    标签: java junit5 junit5-extension-model


    【解决方案1】:

    不幸的是,扩展中不支持参数注入。这只是一种方式。所以为了在你的TimingExtension 中获得RepetitionInfo,你必须设置它。

    首先你需要使用@RegisterExtension 例如

    public class MyTestClass {
    
        @RegisterExtension
        TimingExtension timingExt = new TimingExtension();
    
        @RepeatedTest(value = 5, name = "{currentRepetition}/{totalRepetitions}")
        public void myTest(TestInfo testInfo, RepetitionInfo repInfo) {
            timingExt.setRepetitionInfo(repInfo);
            // do some work here...
        }
    }
    
    public class TimingExtension implements AfterTestExecutionCallback {
    
        private RepetitionInfo repInfo;
    
        @Override
        public void afterTestExecution(ExtensionContext context) throws Exception {
            if (context.getRequiredTestMethod().getDeclaredAnnotation(RepeatedTest.class) != null && repInfo != null) {
                System.out.println(String.format("This was test %d of %d", repInfo.getCurrentRepetition(), repInfo.getTotalRepetitions()))
                repInfo = null;
            }
        }
    
        public void setRepetitionInfo(RepetitionInfo repInfo) {
            this.repInfo = repInfo;
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多