2009-12-10 155 views
0

我想在我的模型上构建一个“toJavaCode()”,它将生成所需的Java源代码以生成该模型(不必介意原因,或者应该或不应该这样做,也没有可能发生的兼容性问题)。测试另一个测试期间生成的Java代码

我在如何测试这个损失。我正在使用maven,但由于我的服务器需要进行适当的批量测试,生成源对我来说不会真正起作用。我确实在“测试”目标期间启动了服务器,但生成源还为时过早。另一方面,尽管我可以使用内置的编译器(来自JDK中的tools.jar)来执行此操作,但我不知道如何将它打包到jar中进行测试(或者加载该jar )。

任何想法?

+0

不知道这是否清楚 - 你想添加一个方法到一个类,该类生成创建该类所需的代码? – 2009-12-10 05:56:01

+0

的对象,而不是类。我有一个类“MyDef”的方法“静态字符串toJavaCode(MyDef myDef)”,当在一个实例上调用时生成需要重新创建该实例的Java代码。 – 2009-12-10 08:18:38

回答

1

可以使用JavaCompiler API编译源文件和设置一个classloader到在您的测试中加载已编译的类(sample code)。 tools.jar必须位于类路径中。如果使用JDK,则是这种情况。

如果您生成的代码对于任何给定的类都是稳定的,那么您可以使用annotation processor生成源代码并在与注释类相同的javac运行中编译它。

+0

直接编译到内存?没有想到这一点。 – 2009-12-10 08:17:02

+0

它编译到临时目录,可以成为你的类路径的一部分。 – 2009-12-10 08:21:29

+0

我已经添加了示例代码的链接。 – 2009-12-10 08:31:57

0

您可以将ant任务添加到您的maven。这是在Maven构建过程中某种“不符合经典顺序”的方式。就像添加一个javac ant任务来测试测试目标左右。

(对不起,我作为你的评注亚光B中困惑 - 但嵌入式Ant任务是你的瑞士军刀在这里。)