2011-08-03 12 views
0

私は現在、私がJavaで持っているHttpServletクラスのためにユニットテストを設定しようとしています。しかし、Jettyのドキュメントは一種のものがなく、私はちょっと立ち往生しています。サーブレットでgetContextPath()を使って出力したので、contextPathが/ hbcであることはかなり確かです。しかし、私は、a)addServlet()メソッドの第2パラメータはどのようなものでなければならないのか、そしてb)URIが何であるべきなのか、はっきりしていません。JettyはJavaのステータスコードを常に返すHttpServlet

ステータスコードは400に戻り、内容はnullです。私は正しい場所を指していないからです(しかし、それが404につながると思うでしょう)か、何か他のものがない場合は、私は確信していません。

サーブレットには、init()、processRequest()、doGet()、およびdoPost()メソッドがあります。

思考?

public class HBCUnitTests extends TestCase { 
    private ServletTester tester; 

    @BeforeClass 
    public void setUp() throws Exception { 
     tester = new ServletTester(); 
     tester.setContextPath("/hbc"); 
     tester.addServlet(HubCommServlet.class, "/"); 
     tester.start(); 
    } 

    @AfterClass 
    public void tearDown() throws Exception { 
     tester.stop(); 
    } 

    @Test 
    public void test() throws Exception { 
     HttpTester request = new HttpTester(); 
     request.setMethod("POST"); 
     request.setVersion("HTTP/1.1"); 
     request.setURI("/"); 

     System.out.println(request.generate()); 

     HttpTester response = new HttpTester(); 
     response.parse(tester.getResponses(request.generate())); 

     System.out.println(response.getContent()); 
     System.out.println(response.getURI()); 
     System.out.println(response.getReason()); 

     assertEquals(200,response.getStatus()); 
     assertEquals("<h1>Hello Servlet</h1>",response.getContent()); 
    } 
} 

答えて

0

私は、サーブレットをテストするためにJMockを使用して終了。

1

addServlet()への2番目の引数は、サーブレット・マッピングであるように見えます。

のcontextPathは/hbcであり、あなたのサーブレットは、その後、私はあなたが/hbc/を要求する必要があることを期待する/にマッピングされている場合:

HttpTester request = new HttpTester(); 
... 
request.setURI("/hbc/"); 
+0

したがって、URIはコンテキストパス+その関数の2番目のパラメータにする必要がありますか?また、私はサーブレットがどこにマップされているかわかりません。コードマッピングには特別なことは何もありません。どのようにマップされるのかはどうすればわかりますか? – joshholat

+0

addServletの2番目の引数はweb.xmlの ''と同じように見えます。 –

+0

私はコンテキストパス/ hbc、addSerlvet引数/ HubComm(これは joshholat

関連する問題