我正在写一个 TestCases
为了我的 RestControllers
对于每一个 ControllerTest calss
我使用以下注释
@WebAppConfiguration
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class, TestAppConfig.class})
所以,我决定定义我自己的注释,包含所有这些注释
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@WebAppConfiguration
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class, TestAppConfig.class})
public @interface ControllerTest {
}
然后,我只使用了一个注释 ControllerTest classes
@ControllerTest
public class XXControllerTest {
}
在此修改后,测试失败了
java.lang.IllegalArgumentException: WebApplicationContext is required
at org.springframework.util.Assert.notNull(Assert.java:115)
为了使它再次工作,它需要我添加 @RunWith(SpringJUnit4ClassRunner.class)
到了 Test class
@ControllerTest
@RunWith(SpringJUnit4ClassRunner.class)
public class XXControllerTest {
}
我的问题是为什么我的 @ControllerTest
注释在包含时不起作用 @RunWith(SpringJUnit4ClassRunner.class)
注解?这有什么特别之处 @RunWith
注解?还是我错过了什么?
PS:我使用相同的方法 Spring config classes
他们工作得很好。