2009-12-10 75 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任務是你的瑞士軍刀在這裏。)