2014-09-10 130 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