2011-07-28 5 views
0

を返す私はservlet.Iを書かれている私はservletRunnermItと私のサーブレットのテストケースを書いて、次の例外を与えたときに、私のservlet.Butのinit()方法の機能をテストします。また、私はちょうど設定とコンテキストオブジェクトを持っています。これら2つのオブジェクトからinit-parametersを取得したい場合、nullを返します。 URLが疑わしいServletContext.getAttributes(「名前」)はヌル

com.meterware.httpunit.HttpException: Error on HTTP request: 405 HTTP method GET is not supported by this URL [http://127.0.0.1:8888/NewsletterServlet] 
    at com.meterware.httpunit.WebClient.validateHeaders(WebClient.java:623) 
    at com.meterware.httpunit.WebClient.updateClient(WebClient.java:500) 
    at com.meterware.httpunit.WebWindow.updateWindow(WebWindow.java:192) 
    at com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:183) 
    at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:158) 
    at com.meterware.httpunit.WebClient.getResponse(WebClient.java:122) 
    at com.newscenter.server.NewsletterServletTest.testFetchNews(NewsletterServletTest.java:79) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) 
    at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) 
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) 
    at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) 
    at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) 
    at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66) 
    at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) 
    at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) 
    at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) 
    at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
+1

サーブレットコードとXML設定を表示します。 –

+0

例外には、 'null'属性とはまったく異なる原因があります。 – BalusC

答えて

0

http://127.0.0.1:8888/NewsletterServlet

は通常、サーブレットURLはhttp://127.0.0.1:8888/WebAppName/NewsletterServletのように、Webアプリケーションの名前が含まれている必要があります。しかし私はあなたのケースでそれを見ません。それは問題かもしれません。

+0

URLが間違っていると、彼は405でなく404を取得していました。 – BalusC

0

エラーメッセージは、あなたのサーブレットのdoGet()実装で

super.doGet(request, response); 

をしたことを示しています。それを除く。

HttpServletクラスは、オーバーライドされていないすべてのdoXxx()メソッドがメソッドがサポートされていないことを示すHTTP 405エラーを送信するテンプレートメソッドパターンに基づいています。それをオーバーライドすると、HTTP 405エラーは送信されませんが、特定のオーバーライドされたメソッドによって生成された結果だけです。しかし、とにかくsuperメソッドを呼び出すと、405を取得します。