2014-01-29 52 views
1

我有權訪問代碼庫(從SVN簽出到我的本地機器)。它是使用Grails框架(MVC體系結構)使用Java和Groovy編寫的。我是一名測試人員,並且作爲自動化測試的一部分,我希望編寫可以調用控制器的代碼,作爲回報,我可以根據數據庫中的響應或條目來檢查結果。我基本上想要跳過UI部分。如何在不使用UI的情況下自動測試Java應用程序?

我該如何開始?我可能不能在開發項目中寫我的代碼(我不允許我想)。我需要爲它創建一個單獨的框架嗎?或者我可以把所有的jar文件包含在一個項目中並在其上編寫代碼?

這個post的答案實際上是我正在尋找的,但是對於Java應用程序。有沒有我可以使用的API?

如果您需要更多信息,請讓我知道。

+4

爲什麼你不能在Grails框架中使用有文檔記錄和集成的測試工具? – RaviH

回答

1

如果應用程序不提供Json,XML或類似的API,您可以在jUnit測試方法中使用像HtmlUnit這樣的測試庫。

"Getting Started"截面A例如:

@Test 
public void homePage_Firefox() throws Exception { 
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17); 
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
    Assert.assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 

    webClient.closeAllWindows(); 
} 

注意的HtmlUnit試圖像的虛擬瀏覽器(用Java編寫的100%)的工作,但它是在執行JavaScript,例如有點限制。

然後,使用另一個庫如jsoupJericho HTML Parese檢查代碼並獲取要在數據庫中檢查的值。另一方面,如果應用程序確實提供了獲取數據的方法,那麼可以使用Jersey Client API來創建REST請求並獲取值。這很簡單。看看這個例子:

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://localhost:9998").path("resource"); 

Form form = new Form(); 
form.param("x", "foo"); 
form.param("y", "bar"); 

MyJAXBBean bean = 
target.request(MediaType.APPLICATION_JSON_TYPE) 
    .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), 
     MyJAXBBean.class); 
相關問題