作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的插件编写单元测试,该插件使用来自 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
s 是 java 模型的一部分,这意味着它是某个 Java 项目的一部分,并且具有完整的类路径、包、包根等。您所做的只是创建一些未连接的文本的解析树到任何java项目。
如果您可以更具体地了解您的目标是什么,那么您可能并不真正需要任何 IType 和 IMethod 实例。
或者,如果您确实需要这些类型的实例,那么您将需要生成 IProject
s,给它添加一个java性质,然后用文件填充它。最好的办法是看看 JDT 测试基础设施是如何工作的。
看看这个文件:https://github.com/eclipse/eclipse.jdt.core/blob/master/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java
以及如何在整个测试框架中使用它。
关于java - 如何将 AST 转换为 JDT Java 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813202/
我是一名优秀的程序员,十分优秀!