Java ArchUnit-确保对方法参数进行注释
我正在尝试编写一个ArchUnit测试规则,它应该确保使用Java ArchUnit-确保对方法参数进行注释,java,annotations,archunit,Java,Annotations,Archunit,我正在尝试编写一个ArchUnit测试规则,它应该确保使用@ComponentInterface注释注释的接口具有使用@Input注释注释的方法参数。 像这样: ArchRule rule = methods() .that() .areDeclaredInClassesThat() .areInterfaces() .and() .areDeclaredInC
@ComponentInterface
注释注释的接口具有使用@Input
注释注释的方法参数。
像这样:
ArchRule rule =
methods()
.that()
.areDeclaredInClassesThat()
.areInterfaces()
.and()
.areDeclaredInClassesThat()
.areAnnotatedWith(ComponentInterface.class)
.should()
.haveRawParameterTypes(
allElements(CanBeAnnotated.Predicates.annotatedWith(Input.class)));
界面如下所示:
@ComponentInterface
public interface AdminComponent {
void login(@Input(name = "loginString") String loginString);
}
但测试失败,出现如下错误:
Method没有原始参数类型所有元素都用@Input-in(AdminComponent.java:0)注释
在这种情况下,规则应该如何正常工作
另外,在做了一些调试之后,haveRawParameterTypes检查参数类型(类)是否被注释,而不是方法参数本身。所以它查看String类并发现它没有用@Input注释。很高兴知道,但这并不能解决问题。也找不到有关参数的信息。。奇怪。。也许它不见了。看来这目前是不可能的。有关相关问题,请参阅。