Java JUnit5,将信息从测试类传递到扩展

Java JUnit5,将信息从测试类传递到扩展,java,junit,junit5,junit5-extension-model,Java,Junit,Junit5,Junit5 Extension Model,我正试图为Junit5编写一个类似于Junit4的扩展,但我没有掌握如何在新的(无状态)扩展系统中实现这一点 在上一个版本中,用户可以将信息传递到扩展类中,从而改变它的行为方式。下面是一个伪代码段,大致显示了所使用的操作: public void MyTest { // here I can define different behaviour for my extension @Rule MyCustomRule rule = MyCustomRule.of(Foo.class).w

我正试图为Junit5编写一个类似于Junit4的扩展,但我没有掌握如何在新的(无状态)扩展系统中实现这一点

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

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();
  }
}

现在,我知道如何操作JUnit5扩展,使用什么生命周期等等。但我不知道如何让测试编写者能够使用JUnit5修改我的扩展的行为。任何指针都值得赞赏。

从JUnit Jupiter 5.0.1开始,很遗憾,无法像JUnit 4中的规则那样通过编程方式将参数传递给
扩展

然而,我正在JUnitJupiter 5.1中添加这样的支持。如果愿意,您可以关注以下问题:

在此期间,向扩展传递信息的唯一方法是扩展支持自定义注释,并从中提取用户提供的信息。例如,我允许用户在Spring框架中的注释中提供自定义SpEL
表达式
,而我的
ExecutionCondition
扩展使用反射从注释中提取
表达式

后续(已接受)来自Sam的回答,同时所提到的错误已经用junit 5.1实现

  • 使用@RegisterExtension

非常感谢您提供的信息,我会留意的:)