- - PR -
MockStrutsTestCaseをEclipse上で実行してNullPointerException発生
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-10-30 17:35
はじめまして。普段から拝見させていただき勉強させていただいております。
現在StrutsTestCaseを用いたテストを行っておりますが、NullPointerExceptionが発生しており、原因が分からず困っております。 環境 Windows2000 Eclipse 2.1.1 StrutsTestCase 2.0 junit.framework.AssertionFailedError: java.lang.NullPointerException at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:285) at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:332) at sample.ActionStrutsTest.testSample(ActionStrutsTest.java:34) 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:324) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167) サンプルとしてMockStrutsTestCaseを継承した ActionStrutsTestを作成し、StrutsTestCaseを実行したところ、 上記のようなスタックトレースが発生しました。 ちなみにstruts-configはEclipse上にconfディレクトリを作成し、その下の WEB-INFディレクトリ内においております。 (confディレクトリにはクラスパスを通しています。) どうやらStrutsTestCaseクラス内でActionServletのinit(config)のメソッド呼び出しで 発生しているところまでは突き止めたのですが。。。 ご教授よろしくお願いします。 | ||||
|
投稿日時: 2003-11-03 22:59
besさん、こんちには。
MockStrutsTestCase.java の 285行目はどのようなコードですか? そこから順に辿って見ませんか? (フレームワークがらみなので、簡単にいくかはわかりませんが。) | ||||
|
投稿日時: 2003-11-08 12:11
元質問者に代わってお答えします。
該当の行を含むメソッドは以下の通りです。 270 public ActionServlet getActionServlet() { 271 if (logger.isDebugEnabled()) 272 logger.debug("Entering getActionServlet()"); 273 init(); 274 try { 275 if (!actionServletIsInitialized) { 276 if (logger.isDebugEnabled()) { 277 logger.debug("getActionServlet() : intializing actionS ervlet"); 278 } 279 this.actionServlet.init(config); 280 actionServletIsInitialized = true; 281 } 282 } catch (ServletException e) { 283 if (logger.isDebugEnabled()) 284 logger.debug("Error in getActionServlet()",e.getRootCause( )); 285 throw new AssertionFailedError(e.getMessage()); 286 } 287 if (logger.isDebugEnabled()) 288 logger.debug("Exiting getActionServlet()"); 289 return actionServlet; 290 } 左側の数字が行番号です。ServletExceptionが発生した原因を 調べる必要がありそうです。と思ったらコンソールにもっと詳しい トレースが出力されていました。 java.lang.NullPointerException at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:658) at org.apache.crimson.parser.Parser2.parse(Parser2.java:333) at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448) at org.apache.commons.digester.Digester.parse(Digester.java:1567) at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java:1433) at org.apache.struts.action.ActionServlet.init(ActionServlet.java:466) at javax.servlet.GenericServlet.init(GenericServlet.java:256) at servletunit.struts.MockStrutsTestCase.getActionServlet(MockStrutsTestCase.java:279) at servletunit.struts.MockStrutsTestCase.actionPerform(MockStrutsTestCase.java:332) struts-config.xmlを見つけられないのかな? | ||||
|
投稿日時: 2003-11-08 17:10
ご回答ありがとうございます。
Kissingerさん 返信が送れて申し訳ありません。 おかもとさんがご指摘したとおり、279行目の this.actionServlet.init(config); で例外が発生しています。 GenericServletのinit(ServletConfig config)メソッドで NullPointerExceptionがおきているみたいです。 もう少し調べて見ます。 | ||||
|
投稿日時: 2003-11-08 18:14
ActionServletの1433行目付近は、以下の通りです。
このコードにある通り、 おそらくweb.xmlが見つからないのではないでしょうか。 | ||||
|
投稿日時: 2003-11-08 22:52
なるほど、MockObjectを使う場合はコンテキストルートを
明示してあげなければならないということですね。 setContextDirectoryというメソッドが用意されていました。 一歩前進です。ありがとうございました。 | ||||
1
