- PR -

StrutsTestCaseについて。

投稿者投稿内容
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-19 09:58
こんにちは。クボタです。

現在StrutsTestCaseの導入を検討していまして、サンプルで試しているのですが以下のエラーが出てしまい、うまくいきません。
C:\Program Files\Apache Tomcat 4.0\webapps\strtestcase\WEB-INF\classes>java junit.textui.TestRunner serv.SearchActionTest
.E.E
Time: 0.562
There were 2 errors:
1) testMatchSearchAction(serv.SearchActionTest)org.apache.cactus.util.ChainedRun
timeException: Failed to get the test results. This is probably due to an error
that happened on the server side when trying to execute the tests. Here is what
was returned by the server : [<html><head><title>Apache Tomcat/4.0.3 - Error rep
ort</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;bac
kground-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : bla
ck;background-color : white;} B{color : white;background-color : #0086b2;} HR{co
lor : #0086b2;} --></STYLE> </head><body><h1>Apache Tomcat/4.0.3 - HTTP Status 4
04 - /ServletRedirector</h1><HR size="1" noshade><p><b>type</b> Status report</p
><p><b>message</b> <u>/ServletRedirector</u></p><p><b>description</b> <u>The req
uested resource (/ServletRedirector) is not available.</u></p><HR size="1" nosha
de></body></html>]
at org.apache.cactus.client.AbstractHttpClient.dispatch2_doTest(Abstract
HttpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):120)
at org.apache.cactus.client.AbstractHttpClient.around2_doTest(AbstractHt
tpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):1236)
at org.apache.cactus.client.AbstractHttpClient.doTest(AbstractHttpClient
.java;org/apache/cactus/util/log/LogAspect.aj(1k):104)
at org.apache.cactus.AbstractWebTestCase.runGenericTest(AbstractWebTestC
ase.java:260)
at org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:133)
at org.apache.cactus.AbstractTestCase.runBare(AbstractTestCase.java:195)

org.apache.cactus.client.ParsingException: Not a valid response
at org.apache.cactus.client.WebTestResultParser.readRootElement(WebTestR
esultParser.java;org/apache/cactus/util/log/LogAspect.aj(1k):140)
at org.apache.cactus.client.WebTestResultParser.dispatch29_parse(WebTest
ResultParser.java;org/apache/cactus/util/log/LogAspect.aj(1k):101)
at org.apache.cactus.client.WebTestResultParser.around29_parse(WebTestRe
sultParser.java;org/apache/cactus/util/log/LogAspect.aj(1k):1236)
at org.apache.cactus.client.WebTestResultParser.parse(WebTestResultParse
r.java;org/apache/cactus/util/log/LogAspect.aj(1k):96)
at org.apache.cactus.client.AbstractHttpClient.callGetResult(AbstractHtt
pClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):230)
at org.apache.cactus.client.AbstractHttpClient.dispatch2_doTest(Abstract
HttpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):114)
at org.apache.cactus.client.AbstractHttpClient.around2_doTest(AbstractHt
tpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):1236)
at org.apache.cactus.client.AbstractHttpClient.doTest(AbstractHttpClient
.java;org/apache/cactus/util/log/LogAspect.aj(1k):104)
at org.apache.cactus.AbstractWebTestCase.runGenericTest(AbstractWebTestC
ase.java:260)
at org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:133)
at org.apache.cactus.AbstractTestCase.runBare(AbstractTestCase.java:195)

(場所をとるので2個目のエラーは書いていませんが同じ内容です。)

環境は
j2sdk1.4.0
tomcat4.0.3
junit3.8.1
cactus1.4.1
struts1.1b2
strutstestcase1.9
です。

どうかご教授よろしくお願いします。
pon
常連さん
会議室デビュー日: 2002/05/21
投稿数: 43
投稿日時: 2002-11-19 10:33
Apache Tomcat/4.0.3 - HTTP Status 404 - /ServletRedirector
がでてますよね。URLが違うか(Cactus.Propertiesとか)、web.xmlでServletRedirector
を登録し損なってはいないでしょうか?
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-19 11:43
ponさんいつもありがとうございます。

以下にcactus.propertiesとweb.xmlを記します。
/WEB-INF/classes/cactus.properties
cactus.servletRedirectorURL=http://localhost:8080/strtestcase/ServletRedirector/

/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>ServletRedirector</servlet-name>
<servlet-class>org.apache.cactus.server.ServletTestRedirector</servlet-class>
</servlet>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>com.youcompany.struts.ApplicationResources</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletRedirector</servlet-name>
<url-pattern>/ServletRedirector/</url-pattern>
</servlet-mapping>
</web-app>

それとスタックトレースがちょっと変わりまして
C:\Program Files\Apache Tomcat 4.0\webapps\strtestcase\WEB-INF\classes>java junit.textui.TestRunner serv.SearchActionTest
(↑プロンプトでの実行コマンド)
.E.E
Time: 0.063
There were 2 errors:
1) testMatchSearchAction(serv.SearchActionTest)org.apache.cactus.util.ChainedRun
timeException: Missing Cactus property [cactus.contextURL]
at org.apache.cactus.util.Configuration.getContextURL(Configuration.java
:185)
at org.apache.cactus.util.ServletConfiguration.getServletRedirectorURL(S
ervletConfiguration.java:94)
at org.apache.cactus.client.ServletHttpClient.getRedirectorURL(ServletHt
tpClient.java:87)
at org.apache.cactus.client.AbstractHttpClient.callRunTest(AbstractHttpC
lient.java;org/apache/cactus/util/log/LogAspect.aj(1k):184)
at org.apache.cactus.client.AbstractHttpClient.dispatch2_doTest(Abstract
HttpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):109)
at org.apache.cactus.client.AbstractHttpClient.around2_doTest(AbstractHt
tpClient.java;org/apache/cactus/util/log/LogAspect.aj(1k):1236)
at org.apache.cactus.client.AbstractHttpClient.doTest(AbstractHttpClient
.java;org/apache/cactus/util/log/LogAspect.aj(1k):104)
at org.apache.cactus.AbstractWebTestCase.runGenericTest(AbstractWebTestC
ase.java:260)
at org.apache.cactus.ServletTestCase.runTest(ServletTestCase.java:133)
at org.apache.cactus.AbstractTestCase.runBare(AbstractTestCase.java:195)
(場所をとるので2個目のエラーは書いていませんが同じ内容です。)

明らかにcontextURLが怪しいのですが、解決できません。

どうかよろしくお願いします。
pon
常連さん
会議室デビュー日: 2002/05/21
投稿数: 43
投稿日時: 2002-11-19 12:00
多分cactus.propertiesの設定で抜けがあるのではないのでしょうか。
参考に私の動いているプロパティをのせます。

cactus.contextURL = http://localhost:8080/myapp
cactus.servletRedirectorName = ServletRedirector
cactus.jspRedirectorName = JspRedirector
cactus.enableLogging = false
cactus.ServletRedirectorURL = http://localhost:8080/myapp/ServletRedirector

cactus.propertiesが一行だとするとcontextURLは設定されていませんよね?
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-19 13:00
お返事ありがとうございます。

cactus.propertiesを上記のように変更したんですが、スタックトレースは最初に書き込んだものと同じやつが出てきました。

何かの参考になればとログをとってみました。

2002-11-19 12:57:41,437 INFO [main] (Log4JCategoryLog.java:88) - >> "GET /strtestcase/ServletRedirector?Cactus_TestMethod=testMatchSearchAction&Cactus_TestClass=serv.SearchActionTest&Cactus_AutomaticSession=true&Cactus_Service=CALL_TEST HTTP/1.1
"
2002-11-19 12:57:41,531 INFO [main] (Log4JCategoryLog.java:88) - >> "Content-type: application/x-www-form-urlencoded
"
2002-11-19 12:57:41,531 INFO [main] (Log4JCategoryLog.java:88) - >> "Host: localhost
"
2002-11-19 12:57:41,531 INFO [main] (Log4JCategoryLog.java:88) - >> "User-Agent: Jakarta HTTP Client/2.0.0a1
"
2002-11-19 12:57:41,531 INFO [main] (Log4JCategoryLog.java:88) - >> \r\n
2002-11-19 12:57:41,593 INFO [main] (Log4JCategoryLog.java:88) - << "HTTP/1.1 404 /ServletRedirector" [\r\n]
2002-11-19 12:57:41,593 INFO [main] (Log4JCategoryLog.java:88) - << "Connection: close" [\r\n]
2002-11-19 12:57:41,593 INFO [main] (Log4JCategoryLog.java:88) - << "Date: Tue, 19 Nov 2002 03:57:41 GMT" [\r\n]
2002-11-19 12:57:41,593 INFO [main] (Log4JCategoryLog.java:88) - << "Server: Apache Tomcat/4.0.3 (HTTP/1.1 Connector)" [\r\n]
2002-11-19 12:57:41,593 INFO [main] (Log4JCategoryLog.java:88) - << "<html><head><title>Apache Tomcat/4.0.3 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Apache Tomcat/4.0.3 - HTTP Status 404 - /ServletRedirector</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>/ServletRedirector</u></p><p><b>description</b> <u>The requested resource (/ServletRedirector) is not available.</u></p><HR size="1" noshade></body></html>"
2002-11-19 12:57:41,609 INFO [main] (Log4JCategoryLog.java:88) - >> "GET /strtestcase/ServletRedirector?Cactus_Service=GET_RESULTS HTTP/1.1
"
2002-11-19 12:57:41,609 INFO [main] (Log4JCategoryLog.java:88) - >> "Content-type: application/x-www-form-urlencoded
"
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - >> "Host: localhost
"
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - >> "User-Agent: Jakarta HTTP Client/2.0.0a1
"
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - >> \r\n
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - << "HTTP/1.1 404 /ServletRedirector" [\r\n]
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - << "Connection: close" [\r\n]
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - << "Date: Tue, 19 Nov 2002 03:57:41 GMT" [\r\n]
2002-11-19 12:57:41,625 INFO [main] (Log4JCategoryLog.java:88) - << "Server: Apache Tomcat/4.0.3 (HTTP/1.1 Connector)" [\r\n]
2002-11-19 12:57:41,640 INFO [main] (Log4JCategoryLog.java:88) - << "<html><head><title>Apache Tomcat/4.0.3 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Apache Tomcat/4.0.3 - HTTP Status 404 - /ServletRedirector</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>/ServletRedirector</u></p><p><b>description</b> <u>The requested resource (/ServletRedirector) is not available.</u></p><HR size="1" noshade></body></html>"
2002-11-19 12:57:41,656 INFO [main] (Log4JCategoryLog.java:88) - >> "GET /strtestcase/ServletRedirector?Cactus_TestMethod=testExecuteActionMappingActionFormHttpServletRequestHttpServletResponse&Cactus_TestClass=serv.SearchActionTest&Cactus_AutomaticSession=true&Cactus_Service=CALL_TEST HTTP/1.1
"
2002-11-19 12:57:41,656 INFO [main] (Log4JCategoryLog.java:88) - >> "Content-type: application/x-www-form-urlencoded
"
2002-11-19 12:57:41,656 INFO [main] (Log4JCategoryLog.java:88) - >> "Host: localhost
"
2002-11-19 12:57:41,656 INFO [main] (Log4JCategoryLog.java:88) - >> "User-Agent: Jakarta HTTP Client/2.0.0a1
"
2002-11-19 12:57:41,671 INFO [main] (Log4JCategoryLog.java:88) - >> \r\n
2002-11-19 12:57:41,671 INFO [main] (Log4JCategoryLog.java:88) - << "HTTP/1.1 404 /ServletRedirector" [\r\n]
2002-11-19 12:57:41,671 INFO [main] (Log4JCategoryLog.java:88) - << "Connection: close" [\r\n]
2002-11-19 12:57:41,671 INFO [main] (Log4JCategoryLog.java:88) - << "Date: Tue, 19 Nov 2002 03:57:41 GMT" [\r\n]
2002-11-19 12:57:41,671 INFO [main] (Log4JCategoryLog.java:88) - << "Server: Apache Tomcat/4.0.3 (HTTP/1.1 Connector)" [\r\n]
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - << "<html><head><title>Apache Tomcat/4.0.3 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Apache Tomcat/4.0.3 - HTTP Status 404 - /ServletRedirector</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>/ServletRedirector</u></p><p><b>description</b> <u>The requested resource (/ServletRedirector) is not available.</u></p><HR size="1" noshade></body></html>"
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - >> "GET /strtestcase/ServletRedirector?Cactus_Service=GET_RESULTS HTTP/1.1
"
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - >> "Content-type: application/x-www-form-urlencoded
"
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - >> "Host: localhost
"
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - >> "User-Agent: Jakarta HTTP Client/2.0.0a1
"
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - >> \r\n
2002-11-19 12:57:41,687 INFO [main] (Log4JCategoryLog.java:88) - << "HTTP/1.1 404 /ServletRedirector" [\r\n]
2002-11-19 12:57:41,703 INFO [main] (Log4JCategoryLog.java:88) - << "Connection: close" [\r\n]
2002-11-19 12:57:41,703 INFO [main] (Log4JCategoryLog.java:88) - << "Date: Tue, 19 Nov 2002 03:57:41 GMT" [\r\n]
2002-11-19 12:57:41,703 INFO [main] (Log4JCategoryLog.java:88) - << "Server: Apache Tomcat/4.0.3 (HTTP/1.1 Connector)" [\r\n]
2002-11-19 12:57:41,703 INFO [main] (Log4JCategoryLog.java:88) - << "<html><head><title>Apache Tomcat/4.0.3 - Error report</title><STYLE><!--H1{font-family : sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} --></STYLE> </head><body><h1>Apache Tomcat/4.0.3 - HTTP Status 404 - /ServletRedirector</h1><HR size="1" noshade><p><b>type</b> Status report</p><p><b>message</b> <u>/ServletRedirector</u></p><p><b>description</b> <u>The requested resource (/ServletRedirector) is not available.</u></p><HR size="1" noshade></body></html>"

よろしくお願いします。
pon
常連さん
会議室デビュー日: 2002/05/21
投稿数: 43
投稿日時: 2002-11-19 13:17
HTTP/1.1 404 /ServletRedirector
を解決しないとだめですねぇ。
HTTP/1.1 200 OK と出るはずです。
どうみてもないURLを指定してますよね。
関係ないかもしれませんがweb.xmlの
/ServletRedirector/
の最後の/はいらないと思うのですが・・・
そのほかにもあるかもしれませんね。いらない/が。
KingSize
常連さん
会議室デビュー日: 2002/11/13
投稿数: 38
投稿日時: 2002-11-19 14:26
迅速なお返事、本当にいつもありがとうございます。

確かに/ServletRedirector/の最後の/は不要でした。
http://homepage2.nifty.com/ymagic/struts/Impressions/ImpressionStrutsTestCase.html
ここを参考にしてやっていたんですけど...
その他テストケースの書き方とかも間違ってまして、何とかテストに通るようにはなりました。
ところでちょっと聞きたいのですが、TestRunnerを実行する時、textuiだと無事に終了するのですが、swingui, awtuiだとFailureになります。
こんな感じです。
junit.framework.AssertionFailedError: Exception in constructor: testMatchSearchAction (org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log)←ここまでが1行。
at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:530)

at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:285)

at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:255)

at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:375)

at org.apache.cactus.util.JUnitVersionHelper.around146_getTestCaseName(JUnitVersionHelper.java;org/apache/cactus/util/log/LogAspect.aj(1k):1170)

at org.apache.cactus.util.JUnitVersionHelper.getTestCaseName(JUnitVersionHelper.java;org/apache/cactus/util/log/LogAspect.aj(1k):103)

at org.apache.cactus.AbstractTestCase.<init>(AbstractTestCase.java:124)

at org.apache.cactus.AbstractWebTestCase.<init>(AbstractWebTestCase.java:86)

at org.apache.cactus.ServletTestCase.<init>(ServletTestCase.java:119)

at servletunit.struts.CactusStrutsTestCase.<init>(CactusStrutsTestCase.java:63)

at serv.SearchActionTest.<init>(SearchActionTest.java:41)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:274)

at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:103)

Caused by: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log

at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:415)

at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:523)

... 21 more

Caused by: org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Jdk14Logger does not implement Log

at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:411)

... 22 more

)
あとコンソールにいつもこんな感じのメッセージが出ます。
2002/11/19 14:10:09 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
2002/11/19 14:10:10 org.apache.struts.action.RequestProcessor process
情報: Processing a 'GET' for path '/empSearch'

上記の2件を見るとログ処理に関係してるように思われるのですが、どこをいじれば設定などを変えられるのでしょうか?

よろしくご教授お願いします。
pon
常連さん
会議室デビュー日: 2002/05/21
投稿数: 43
投稿日時: 2002-11-19 15:00
バージョン違いによる例外だと思います。
J2EE1.3はJ2SE1.3なので・・・
Cactusのログでこけてますね。
もちろんコンソールでは寂しいと思いますので
Antのjunitreportというタスクを使うとXMLから
HTMLに変換してテスト結果が残せます。
#同様にServletTestRunnerでXSLをかませばブラウザで閲覧できます。

英語のドキュメントばかりで私は苦手なので行き当たりばったりで
例外を出しまくりました。これが正しいかは分かりませんが参考程度に・・・

JVMを起動させる際にオプションでcommons-loggingに設定すればJDK1.4のログは
使わないと思います。

スキルアップ/キャリアアップ(JOB@IT)