ContextConfiguration不适用于测试平台的JUnit4类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ContextConfiguration不适用于测试平台的JUnit4类相关的知识,希望对你有一定的参考价值。

您好我在使用Spring引导运行Vaadin测试用例时,找到了在@ContextConfiguration中给出实例化bean的解决方案。

这是我配置的一些代码。

@WebAppConfiguration
@RunWith(JUnit4.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = UIConfiguration.class)
public abstract class BaseTestCase extends TestBenchTestCase {
//code stuff
}

@Configuration
@PropertySource("classpath:META-INF/spring/application.properties")
@ComponentScan(basePackages = "com.ui", excludeFilters = @ComponentScan.Filter(value = Controller.class, type = FilterType.ANNOTATION))
@EnableAsync
@EnableI18N
public class UIConfiguration implements AsyncConfigurer {
//block of code
}
答案

如果你不想使用ClassRule,你应该可以使用RuleSpringRunner Spring提供

    @ClassRule
    public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();

    @Rule
    public final SpringMethodRule springMethodRule = new SpringMethodRule();

有关更多详细信息,请参阅java doc

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/context/junit4/rules/SpringClassRule.html

SpringClassRule是一个自定义的JUnit TestRule,它通过TestContextManager和相关的支持类和注释在标准JUnit测试中支持Spring TestContext Framework的类级功能。

与SpringJUnit4ClassRunner相比,Spring基于规则的JUnit支持的优势在于它独立于任何Runner,因此可以与现有的替代运行程序(如JUnit的Parameterized或第三方运行程序,如MockitoJUnitRunner)结合使用。

但是,为了实现与SpringJUnit4ClassRunner相同的功能,SpringClassRule必须与SpringMethodRule结合使用,因为SpringClassRule仅支持SpringJUnit4ClassRunner的类级功能。

以上是关于ContextConfiguration不适用于测试平台的JUnit4类的主要内容,如果未能解决你的问题,请参考以下文章

用于 Spring Boot + Thymeleaf 的 @WebAppConfiguration 和 @ContextConfiguration

Jest、Enzyme 和 Styled Component 不适用于警告:React.createElement

样式表元素适用于 Windows,但不适用于 raspberry-pi

IPN 适用于“客人”付款,但不适用于贝宝帐户持有人

如何配置@ContextConfiguration?

(转)@ContextConfiguration注解说明