gpt4 book ai didi

java - 如何使用 Junit 5 为每个测试提供单独的类加载器

转载 作者:行者123 更新时间:2023-12-02 00:41:01 25 4
gpt4 key购买 nike

我一直在尝试设置一个 Junit 5 扩展来强制每个测试都获得一个单独的类加载器。我可以在 Junit4 中轻松完成此操作,创建我自己的 BlockJUnit4ClassRunner。但是,我现在无法让它工作。

目的是能够测试不同状态下的静态 block 或内存字段等内容。

到目前为止,我一直在尝试使用 TestInstanceFactory,但没有取得任何成功:

public class SeparateClassLoaderExtension implements TestInstanceFactory {

@SneakyThrows
@Override
public Object createTestInstance(TestInstanceFactoryContext factoryContext, ExtensionContext extensionContext) throws TestInstantiationException {
ClassLoader testClassLoader = new TestClassLoader();
final Class<?> testClass = Class.forName(factoryContext.getTestClass().getName(), true, testClassLoader);

Constructor<?> defaultConstructor = testClass.getDeclaredConstructor();
defaultConstructor.setAccessible(true);
return defaultConstructor.newInstance();
}
}

我从 Junit 得到一个异常,说该类的类型不正确。

有人有什么想法吗?

最佳答案

JUnit Jupiter 目前支持这一点。这是相关问题:https://github.com/junit-team/junit5/issues/201

关于java - 如何使用 Junit 5 为每个测试提供单独的类加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com