【问题标题】:What is the equivalent of TestName rule in JUnit 5?JUnit 5中TestName规则的等价物是什么?
【发布时间】:2019-02-04 02:10:55
【问题描述】:

如何在 JUnit 5 中获取测试方法的名称?

【问题讨论】:

    标签: java unit-testing kotlin junit junit5


    【解决方案1】:

    在您的测试方法中声明TestInfo 类型的参数,并为该方法声明JUnit will automatically supply an instance

    @Test
    void getTestInfo(TestInfo testInfo) { // Automatically injected
        System.out.println(testInfo.getDisplayName());
        System.out.println(testInfo.getTestMethod());
        System.out.println(testInfo.getTestClass());
        System.out.println(testInfo.getTags());
    }
    

    您可以从TestInfo 实例中获取测试方法名称(以及更多),如上所示。

    【讨论】:

    • 这很不错,但是如果您有稍微复杂的测试,那么您必须在方法更改周围传递 testinfo,这会使它们变得不必要地复杂。 ``` @Test void test(TestInfo info) { complexValidation(info); } ```
    【解决方案2】:

    除了关于将TestInfo 注入到测试方法中的内容之外,还可以将TestInfo 注入到带有@BeforeEach@AfterEach 注释的方法中,这有时可能很有用:

    @BeforeEach
    void setUp(TestInfo testInfo) {
      log.info(String.format("test started: %s", testInfo.getDisplayName());
    }
    @AfterEach
    void tearDown(TestInfo testInfo) {
      log.info(String.format("test finished: %s", testInfo.getDisplayName());
    }
    

    【讨论】:

    • 这对于我所面临的情况非常有用,因为我们有一个基础测试类,我们的每个其他测试都扩展了 - 在这里将 TestInfo 变量分配给实例方法意味着我们只需添加我们的修复在一个地方!
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2014-07-26
    • 2011-05-20
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    相关资源
    最近更新 更多