你好,我在使用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
}
答案 0 :(得分:0)
如果您不想使用ClassRule
,则应该可以使用Rule
和SpringRunner
Spring提供的内容
@ClassRule
public static final SpringClassRule SPRING_CLASS_RULE = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
有关更多详细信息,请参见Java文档,
SpringClassRule是一个自定义的JUnit TestRule,它通过TestContextManager以及相关的支持类和注释在标准JUnit测试中支持Spring TestContext Framework的类级功能。
与SpringJUnit4ClassRunner相比,Spring的基于规则的JUnit支持具有以下优势:它独立于任何Runner,因此可以与现有的替代运行器(如JUnit的参数化运行器)或第三方运行器(如MockitoJUnitRunner)组合。
但是,为了实现与SpringJUnit4ClassRunner相同的功能,必须将SpringClassRule与SpringMethodRule结合使用,因为SpringClassRule仅支持SpringJUnit4ClassRunner的类级功能。