我正在使用NetBeans和GlassFish 3.0.1來創建EJB3應用程序。我已經寫了幾個單元測試,它們通過JUnit運行並使用嵌入式GlassFish。每當我在開發計算機上運行這些測試時(所以從NetBeans內部),這都很好。Hudson + JUnit +嵌入GlassFish,如何提供域配置?
現在我想讓哈德森做這些測試。目前,它與查找失敗上的資源(數據源到JPA持久性單元在這種情況下)不:
[junit] SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
[junit] java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'mvs_devel' in SerialContext
摸索並試圖瞭解此之後,我認爲這是關係到嵌入式GlassFish未配置資源。換句話說,它缺少一個domain.xml文件。對?
兩個問題:
- 它爲什麼對我的dev的盒子NetBeans的工作? NetBeans在後臺做什麼神奇的事情?
- 我該如何提供文件? Hudson-box上的嵌入GlassFish在哪裏期待它?
Hudson使用的是相同的Ant構建腳本(由NetBeans創建)。
我讀過關於instanceRoot和EmbeddedFileSystemBuilder的this post,但我對此不夠了解。這對每個TestCase都是需要的(Emb。GF爲每個待測bean開始/停止)?這是EJBContainer.createEJBContainer()的一部分嗎?同樣,爲什麼在NetBeans上運行測試時沒有必要這麼做?
更新 繼彼得的意見,我可以確認:在代碼的新檢出的副本運行ant的時候,用如Hudson配置相同的屬性,測試得到執行!
感謝您的建議!當我運行'螞蟻測試'時,測試實際上工作並得到執行。任何其他想法? –
Hank
2010-09-15 14:38:35
@Hank:你是否從命令行在Hudson服務器上運行它?如果是,它可能是一個權限問題。用哈德森正在運行的相同憑證運行你的測試? – 2010-09-15 14:46:49
@第二彼得:你達人!感謝隊友,就是這樣。 $ {GLASSFISH_HOME}/glassfish/domains/domain1/config對於哈德森用戶來說是不可讀的。現在一切都好! – Hank 2010-09-15 17:22:50