2014-09-10 128 views
0

我正在使用com.sun.codemodel.JCodeModel为每个类生成几乎1000个具有关联的JUnits的类。如何等待,直到com.sun.codemodel.JCodeModel.build()已完成

我还生成了一个执行单个JUnit测试用例的JUnit测试套件。

要完成此代码生成项目,我希望以编程方式使用final Result result = JUnitCore.runClasses(AllTests.class);执行JUnit测试套件。

我遇到的困难是JUnit测试套件的执行没有与代码生成同步。我需要能够检测何时com.sun.codemodel.JCodeModel.build()方法已完成我的代码生成,然后才能执行JUnit测试套件。

如何知道com.sun.codemodel.JCodeModel.build()方法何时完成?

+0

您如何执行与JUnit测试相关的JCodeModel代码生成? – 2014-09-10 13:32:23

回答

2

通过JCodeModel扩展您的类,然后覆盖构建方法:

@override 
... build(){ 
super.build(); 
startTest(); 
} 

然后建立函数执行完毕后,应该开始。

+0

感谢您的建议。然而,这并不能解决我的问题,因为我不仅需要等到所有生成的类都生成了,我还需要它们进行编译。我在eclipse中执行这个项目;它开始看起来像我要么以编程方式提到eclipse项目(并等待或完成),或者放弃并手动运行测试套件 – Hector 2014-09-10 08:55:09

+1

您可以手动启动编译器... JavaCompiler compiler = ToolProvider.getSystemJavaCompiler() ;编译器.run(null,null,null,sourceFile.getPath()); – 2014-09-10 15:15:29