Я пытался настроить расширение Junit 5, чтобы каждый тест получал отдельный ClassLoader. Я могу сделать это довольно легко в 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();
}
}
Я получаю исключение от Junit, говорящее о том, что класс неправильного типа.
Кто-то, какая идея?