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

时间:2019-04-30 14:34:04

标签: unit-testing spring-boot automated-tests spring-boot-test vaadin8

你好,我在使用Spring Boot运行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
}

1 个答案:

答案 0 :(得分:0)

如果您不想使用ClassRule,则应该可以使用RuleSpringRunner Spring提供的内容

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

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

有关更多详细信息,请参见Java文档,

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的参数化运行器)或第三方运行器(如MockitoJUnitRunner)组合。

     

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