相关疑难解决方法(0)

Java自定义Annotation聚合多个注释

我正在TestCases为我写作RestControllers
每个ControllerTest calss我使用以下注释

@WebAppConfiguration
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class, TestAppConfig.class})
Run Code Online (Sandbox Code Playgroud)

所以,我决定定义我自己的注释,包含所有这些注释

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@WebAppConfiguration
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {WebConfig.class, TestAppConfig.class})
public @interface ControllerTest {
}
Run Code Online (Sandbox Code Playgroud)

然后,我只使用了一个注释 ControllerTest classes

@ControllerTest
public class XXControllerTest {
}
Run Code Online (Sandbox Code Playgroud)

在此修改后,测试失败了

java.lang.IllegalArgumentException: WebApplicationContext is required
    at org.springframework.util.Assert.notNull(Assert.java:115)
Run Code Online (Sandbox Code Playgroud)

为了使它再次工作,它需要我添加@RunWith(SpringJUnit4ClassRunner.class)Test class

@ControllerTest
@RunWith(SpringJUnit4ClassRunner.class)
public class XXControllerTest {
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我的@ControllerTest注释在包含注释时不起作用@RunWith(SpringJUnit4ClassRunner.class)@RunWith注释有什么特别之处吗?还是我错过了什么?

PS:我使用相同的方法Spring config classes,他们工作得很好.

java spring unit-testing annotations

15
推荐指数
1
解决办法
4414
查看次数

标签 统计

annotations ×1

java ×1

spring ×1

unit-testing ×1