gpt4 book ai didi

java - 在 junit 测试中获取一个类作为 javax.lang.model.element.Element

转载 作者:行者123 更新时间:2023-11-28 20:19:11 27 4
gpt4 key购买 nike

我想测试我的实用程序类 ElementUtils,但我不知道如何将类作为元素获取。在 AnnotationProcessors 中,我使用以下代码获取我的元素

Set<? extends Element> elements = roundEnvironment.getElementsAnnotatedWith(annotation);

但是由于 RoundEnvironment 在测试中不可用,所以这不是一个选项。

有什么方法可以将类作为 javax.lang.model.element.Element 获取吗?

最佳答案

您可以使用 JUnit @Rule 在测试期间调用编译器运行,此时您可以使用 Types 和 Elements 实用程序类来获取 TypeMirror 和 Element 实例。

这样的规则已经创建并且是 http://github.com/google/compile-testing 的一部分并且可以这样使用:

public @Rule CompilationRule rule = new CompilationRule();
private Elements elements;
private Types types;


@Before
public void setup() {
elements = rule.getElements();
types = rule.getTypes();
}

@Test void testStuff() {
TypeElement typeElement = elements.getTypeElement("some.fully.qualified.ClassName");
// do stuff.
}

可以在 http://github.com/google/auto 中找到一些您可以用来操作(无论是在测试中还是在其他方面)的 TypeMirror 和 Element 实例。公共(public)子模块中的项目,其中包含方便管理这些 java.lang.model 类的实用程序。

关于java - 在 junit 测试中获取一个类作为 javax.lang.model.element.Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14701362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com