代码之家  ›  专栏  ›  技术社区  ›  Siliarus

JUnit 5,将信息从测试类传递到扩展

  •  3
  • Siliarus  · 技术社区  · 7 年前

    在前一个版本中,用户可以将信息传递到扩展类中,从而改变其行为方式。下面是一个伪代码段,大致显示了使用它可以做什么:

    public void MyTest {
    
      // here I can define different behaviour for my extension
      @Rule MyCustomRule rule = MyCustomRule.of(Foo.class).withPackage(Bar.class.getPackage).alsoUse(Cookies.class);
    
      @Test
      public void someTest() {
        // some test code already affected by the @Rule
        // plus, user has access to that class and can use it, say, retrieve additional information
        rule.grabInfoAboutStuff();
      }
    }
    

    现在,我知道如何操作JUnit 5扩展,使用什么生命周期等。但我不知道如何让测试编写器能够使用JUnit5修改我的扩展行为。感谢您的指点。

    2 回复  |  直到 6 年前
        1
  •  6
  •   Sam Brannen    7 年前

    遗憾的是,在JUnit Jupiter 5.0.1中,无法将参数传递给 Extension 以编程方式 就像你在JUnit 4中的规则一样。

    然而,我正在努力在JUnit Jupiter 5.1中添加这样的支持。如果愿意,您可以遵循以下问题: https://github.com/junit-team/junit5/issues/497

    传递信息 扩展是指支持自定义注释并从中提取用户提供的信息的扩展。例如,我允许用户提供自定义SpEL expression @EnabledIf Spring框架中的注释,以及我的 ExecutionCondition 扩展拉动 表示 使用反射从注释中删除。

    推荐文章