从 Maven 集成测试中查找应用程序代码中的注释方法
Finding annotated methods in application code from maven integration test
我在我的程序中有一个应用于方法的自定义注释。我想找到所有带有特定注释的方法。在我的应用程序代码中,我可以使用 Reflections 包来执行此操作:
new Reflections(
new ConfigurationBuilder().setUrls(
ClasspathHelper.forPackage("com.my.package")
).setScanners(new MethodAnnotationsScanner())
).getMethodsAnnotatedWith(MyAnnotation.class);
但是,当我尝试从通过 failsafe
调用的集成测试中执行相同的操作以在应用程序中(而不是在测试中)查找带注释的方法时,没有找到任何方法。如何从集成测试中获取带注释的方法?
为了让事情正常工作,我必须改变两件事:
- 我使用的是 0.9.9-RC1 版本。我粗心大意,首先在 https://code.google.com/archive/p/reflections/ 上发现了 Reflections,其中将 0.9.9-RC1 列为最新版本,但没有注意到提到该项目已移至 GitHub 的小字。我以为 0.9.9-RC1 是最新版本,事实并非如此。截至撰写本文时最新版本是 0.9.11。
我更改了 Reflections
实例化如下:
new Reflections("com.my.package", new MethodAnnotationsScanner());
我在我的程序中有一个应用于方法的自定义注释。我想找到所有带有特定注释的方法。在我的应用程序代码中,我可以使用 Reflections 包来执行此操作:
new Reflections(
new ConfigurationBuilder().setUrls(
ClasspathHelper.forPackage("com.my.package")
).setScanners(new MethodAnnotationsScanner())
).getMethodsAnnotatedWith(MyAnnotation.class);
但是,当我尝试从通过 failsafe
调用的集成测试中执行相同的操作以在应用程序中(而不是在测试中)查找带注释的方法时,没有找到任何方法。如何从集成测试中获取带注释的方法?
为了让事情正常工作,我必须改变两件事:
- 我使用的是 0.9.9-RC1 版本。我粗心大意,首先在 https://code.google.com/archive/p/reflections/ 上发现了 Reflections,其中将 0.9.9-RC1 列为最新版本,但没有注意到提到该项目已移至 GitHub 的小字。我以为 0.9.9-RC1 是最新版本,事实并非如此。截至撰写本文时最新版本是 0.9.11。
我更改了
Reflections
实例化如下:new Reflections("com.my.package", new MethodAnnotationsScanner());