我有两个注释:@Feature和@Scenario。
我在Controller方法中使用了@Feature批注(路径“ src / main / java ...”中的GET / PUT / POST ...)。
我在单元测试(在路径“ src / test / java ...”中的控制器或服务测试)中使用的@Scenario批注。
我需要列出所有带有两个注释的方法,因此我在“ src / main / java ...”路径中创建了一个类。 我能够找到所有带有@Feature注释的方法,但是找不到带有@Scenario注释的方法。 我该怎么办?
我尝试使用Reflections库做到这一点
final Set<Method> features = new Reflections("com.myprefix", new MethodAnnotationsScanner()).getMethodsAnnotatedWith(Feature.class);
final Set<Method> scenarios = new Reflections("com.myprefix", new MethodAnnotationsScanner()).getMethodsAnnotatedWith(Scenario.class);
“功能”返回所有带有@Feature注释的方法,但“场景”返回空
答案 0 :(得分:0)
您是否尝试编写JUnit测试来解决问题?这是应该适合您的问题的一个:
@Test
public void findMethodsannotatedWith(){
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false /* don't exclude Object.class */), new ResourcesScanner()
, new MethodAnnotationsScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix("com.myprefix"))));
final Set<Method> features = reflections.getMethodsAnnotatedWith(Feature.class);
final Set<Method> scenarios = reflections.getMethodsAnnotatedWith(Scenario.class);
}