在 Spring Boot 测试中禁用 MockitoPostProcessor

问题描述

我有一个测试,测试运行时加载的类中的一些 Bean 可以添加到 ApplicationContext。

执行测试时出现以下异常

Caused by: java.lang.IllegalArgumentException: Could not find class [TestExtension]
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:334)
    at org.springframework.boot.test.mock.mockito.MockitoPostProcessor.getConfigurationClasses(MockitoPostProcessor.java:147)
    at org.springframework.boot.test.mock.mockito.MockitoPostProcessor.postProcessbeanfactory(MockitoPostProcessor.java:134)
    at org.springframework.boot.test.mock.mockito.MockitoPostProcessor.postProcessbeanfactory(MockitoPostProcessor.java:128)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokebeanfactoryPostProcessors(PostProcessorRegistrationDelegate.java:299)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokebeanfactoryPostProcessors(PostProcessorRegistrationDelegate.java:178)
    at org.springframework.context.support.AbstractApplicationContext.invokebeanfactoryPostProcessors(AbstractApplicationContext.java:751)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:569)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:326)
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:123)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
    ... 52 more
Caused by: java.lang.classNotFoundException: TestExtension
    at java.net.urlclassloader.findClass(urlclassloader.java:382)
    at java.lang.classLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.classLoader.loadClass(ClassLoader.java:357)
    at java.lang.class.forName0(Native Method)
    at java.lang.class.forName(Class.java:348)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:284)
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:324)
    ... 66 more

似乎 MockitoPostProcessor 试图从错误的类加载器加载我动态加载的类。有没有办法

  • 告诉 Spring 在加载类时使用哪个类加载器或
  • 为此测试禁用 SpringPostProcessor(似乎来自 spring.factories,我不知道如何禁用它)。

解决方法

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

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

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