2016-11-12 24 views
0

我有以下的測試,對於在一個servlet測試GET方法的工作原理:的Arquillian測試POST到Servlet的

@ArquillianResource 
    URL deploymentUrl; 

    @Test 
    @RunAsClient 
    public void testLoginServlet() throws IOException { 
     URL url = new URL(deploymentUrl, "login"); 
     StringBuilder builder = new StringBuilder(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); 
     String line; 

     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
     } 
     reader.close(); 

     assertNotNull(builder.toString()); 
    } 

什麼是測試一個POST調用同一個servlet的最佳方式,通過1個參數?

我應該創建一個WebTarget並使用它,或者是否有與Arquillian相關的技巧使其更容易。我認爲有註釋但找不到任何東西。

回答

0

這就是我想出了:

protected String doLoginPost(String url, String username, String password) throws Exception { 

    HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(url); 

    List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); 
    urlParameters.add(new BasicNameValuePair("username", username)); 
    urlParameters.add(new BasicNameValuePair("password", password)); 
    post.setEntity(new UrlEncodedFormEntity(urlParameters)); 

    HttpResponse response = client.execute(post); 
    L.info("\nSending 'POST' request to URL : " + url); 
    L.info("Post parameters : " + post.getEntity()); 
    L.info("Response Code : " + 
      response.getStatusLine().getStatusCode()); 
    if (response.getStatusLine().getStatusCode() != 200) { 
     return null; 
    } 
    BufferedReader rd = new BufferedReader(
      new InputStreamReader(response.getEntity().getContent())); 

    StringBuffer result = new StringBuffer(); 
    String line = "RESULT: "; 
    result.append(line); 
    while ((line = rd.readLine()) != null) { 
     result.append(line); 
    } 

    return result.toString(); 
}