java.lang.NullPointerException в org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:134)

Я использую Struts2, Spring3 для своего приложения, когда я выполняю тест jUnit4 для своего приложения, я получаю эту ошибку:

null java.lang.NullPointerException  
at org.apache.struts2.StrutsJUnit4TestCase.executeAction(StrutsJUnit4TestCase.java:134)     
at com.junitaction.HelloWorldTest.testGetString2(HelloWorldTest.java:76)    
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)   
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)     
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)   
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)   
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)    
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)     
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)   
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)

ошибка возникает, когда я вызываю метод executeAction. Как решить эту проблему.

мои jar-файлы:

antlr-2.7.2.jar, asm-3.3.jar, commons-fileupload-1.3.jar, commons-io-2.0.1.jar, commons-lang-2.4.jar, commons-lang3-3.1.jar, commons- logging-1.1.3.jar, freemarker-2.3.19.jar, javassist-3.11.0.GA.jar, ognl-3.0.6.jar, org.springframework.web.servlet-3.2.3.RELEASE.jar, spring-aop-3.2.3.RELEASE.jar, spring-aspects-3.2.3.RELEASE.jar, spring-beans-3.2.3.RELEASE.jar, spring-context-3.2.3.RELEASE.jar, spring- контекстная поддержка-3.2.3.RELEASE.jar, spring-core-3.2.3.RELEASE.jar, spring-expression-3.2.3.RELEASE.jar, spring-test-3.2.3.RELEASE.jar, spring- web-3.2.3.RELEASE.jar, struts2-core-2.3.15.1.jar, struts2-junit-plugin-2.3.15.1.jar, struts2-spring-plugin-2.3.15.1.jar, xwork-core-2.3. 15.1.бан.

struts.xml:

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

 <struts>        
     <constant name="struts.objectFactory" 
     value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
         <!-- Configuration for the default package. -->
         <package name="default" extends="struts-default">
             <action name="helloworld" class="helloWorldClass">
                 <result>/success.jsp</result>
             </action>
         </package> 
 </struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>            
            /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list> 
</web-app>

appplicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="helloWorldClass" class="com.junitaction.HelloWorld" >
    </bean>
</beans>

person Developer-j    schedule 02.09.2013    source источник


Ответы (1)


Добавьте в проект плагин junit для struts2 и расширьте свои тесты с StrutsSpringJUnit4TestCase.

И в struts.xml вы должны использовать

<constant name="struts.objectFactory" value="spring" />

чтобы весна могла управлять вашими действиями.

person Roman C    schedule 02.09.2013
comment
Опубликуйте полную трассировку стека, а также укажите версию, которую вы используете. - person Roman C; 02.09.2013
comment
Также нужно javax.servlet jsp-api - person Roman C; 02.09.2013
comment
2.0 или 2.1, это включено в пакет JavaEE6 javax.servlet.jsp.jar, к сожалению, без информации о версии. Итак, используйте maven. - person Roman C; 02.09.2013
comment
я поместил эту банку, но снова получаю только исключение нулевого указателя. - person Developer-j; 02.09.2013
comment
Вы должны поместить его в web-inf/lib и повторно развернуть. - person Roman C; 02.09.2013
comment
@ Developer-j Вы также изменили objectFactory, поэтому измените код в файле конфигурации. - person Roman C; 02.09.2013
comment
я изменил свою фабрику объектов на ‹constant name=struts.objectFactory value=spring /›, но снова возникает то же самое исключение нулевого указателя. - person Developer-j; 03.09.2013
comment
Это все банки, перечисленные выше? - person Roman C; 03.09.2013
comment
извините за поздний ответ, эти банки использую только я, а apache-tomcat7.0.42 для сервера - person Developer-j; 03.09.2013
comment
тогда вам нужно переработать эти банки, которые являются неполными или имеют неправильную версию, попробуйте maven загрузить необходимые банки. - person Roman C; 03.09.2013
comment
мы не используем maven, поэтому я не могу использовать maven для junit, есть ли другой способ сделать это, пожалуйста, помогите мне - person Developer-j; 03.09.2013
comment
это не вопрос, помни, либо ты следуешь за мной, либо я сдаюсь, я не шучу. - person Roman C; 03.09.2013
comment
Я уже говорил вам, создайте это приложение и просмотрите web-inf/lib, чтобы узнать, какие файлы jar были загружены, сравните с вашим проектом, преобразуйте свой проект в проект maven создайте pom.xml, добавьте зависимость, используйте команду maven для разрешения зависимостей. Тогда расскажи мне, что случилось. - person Roman C; 03.09.2013