我一直在尝试设置一个 Junit 5 扩展来强制每个测试获得一个单独的类加载器。我可以在 Junit4 中轻松完成,创建我自己的 BlockJUnit4ClassRunner。但是,我现在无法让它工作。
目的是能够测试诸如静态块或不同状态下的记忆字段之类的东西。
到目前为止,我一直在尝试使用 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();
}
}
Run Code Online (Sandbox Code Playgroud)
我从 Junit 那里得到一个例外,说这个类的类型不正确。
有人有什么想法吗?
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |