2009-04-30 85 views
8

集成測試一個web.xml OK,這是一種涉及到:Using jetty to install and run servlet tests programmatically裝載了與碼頭

了偉大的答案在那裏,已經能夠以編程方式加載servlet和它全部採用真棒。

然而,我想要做的是在一個測試中加載一個web.xml(全部在classpath中)並讓它運行一個服務器(使用當前的classpath) - 我已經在文檔中看到如何指向它到一個目錄來做到這一點,但我想脫離類路徑(更適合就地測試)。基本驗證我的web.xml。

(它不相關,但這個應用程序是在斯卡拉,但我沒有問題,一切工作如廣告)。

+0

我沒有看到你的問題 - 你是什麼意思「所有在類路徑中」?據我所知,你想用某個web.xml啓動一個Jetty。這應該沒問題,用腳本複製web.xml並啓動Jetty。 – Mork0075 2009-04-30 20:22:22

+0

其實我想讓它與測試一起運行 - 不是作爲一個單獨的進程啓動它(它工作正常,但不像進程單元測試那樣整潔) - 它只是一個方便的事情。 – 2009-04-30 23:19:22

回答

13

這聽起來像你想要做的是以編程方式加載一個適當的Web應用程序,而不是加載單獨的s​​ervlet(我想你沒有一個完整的WAR文件可以工作)。

Server server = new Server(port); 
WebAppContext root = new WebAppContext(); 

root.setWar("/path/to/somewhere"); 
root.setContextPath("/"); 

server.addHandler(root); 
server.start(); 

的訣竅是,/path/to/somewhere應包含WEB-INF目錄和您的web.xml文件應該生活在裏面。其他任何東西都不需要在該目錄結構中生存,因爲所有其他東西都可以從你的類路徑中自動加載(儘管如果你願意的話,你可以製作一個實際的WAR文件或完整的WAR WAR樹的路徑)。