Im пишу 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
, и они работают нормально.