如何将参数传递给JUnit5中的扩展类构造函数

问题描述

我很难将参数从测试类传递到其扩展类构造函数。 从JUnit4迁移到JUnit5时发生问题。 (对于JUnit4来说效果很好) 在JUnit4中,测试类如下所示:

$ ./test_args.py --production
Namespace(environment='production')

和支持课程如下:

public class TestClass{
    @Rule
    @Autowired
    public SupportClass supportClass;
}

我正在JUnit5中尝试做(测试类):

   @Component
   @RequiredArgsConstructor
   public class SupportClass implements TestRule {
        private final EntityManager entityManager;

        @Override
        public Statement apply(Statement base,Description description) {
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {
                final Statistics statistics = ((Session) entityManager.getDelegate()).getSessionFactory().getStatistics();
                statistics.clear();

                base.evaluate();
            }
         };
        }
   }

和支持类的外观:

@ExtendWith(SupportClass.class)
public class TestClass{

    @Autowired
    public SupportClass supportClass;
}

当我尝试执行测试时,我得到了 java.lang.NoSuchMethodException:.SupportClass.init()异常。我知道这与缺少非参数构造函数有关。不幸的是,我的SupportClass需要使用该参数。问题是如何从测试类传递此 entityManager 作为参数作为支持?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)