我正在为我的插件编写单元测试,该插件使用 JDT 中的 IType 和 IMethod 接口(interface)。要编写单元测试,我需要实例化此类接口(interface)。回答 this question展示了如何创建 AST 模型,但我不知道如何将其转换为 Java 模型?
我的代码如下所示:
String source =
"package com.test\n" +
"\n" +
"import com.test.something;" +
"\n" +
"public class Class{\n" +
"int sum(int a, int b)\n" +
"}\n";
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(source.toCharArray());
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
所以我有一个 CompilationUnit
实例,但我需要一个 ICompilationUInit 实例,这样我就可以访问 IMethod
和 IType
对象.
最佳答案
这实际上是不可能的。 ICompilationUnit
是 java 模型的一部分,这意味着它是某个 Java 项目的一部分,并且具有完整的类路径、包、包根等。您所做的就是创建一个解析一些未连接到任何 java 项目的文本树。
如果您可以更具体地说明您的目标是什么,那么您可能并不真正需要任何 IType 和 IMethod 实例。
或者,如果您确实需要这些类型的实例,那么您将需要生成 IProject
,向其添加 java 性质,然后用文件填充它。最好的选择是了解 JDT 测试基础架构如何工作。
以及如何在整个测试框架中使用它。
关于java - 如何将 AST 转换为 JDT Java 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813202/