struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Menzies (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (WW-3826) Unit Testing A Portlet Action Using StrutsTestCase Causes A NullPointerException
Date Thu, 14 Jun 2012 15:32:44 GMT

    [ https://issues.apache.org/jira/browse/WW-3826?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13295107#comment-13295107
] 

Michael Menzies commented on WW-3826:
-------------------------------------

Finally got around to testing your StrutsPortletTestCase. I love the ability to override the
getMajorVersion(), but unfortunately, even with this addition, this test class does not work
with JSR-168. The reason being is that StateAwareResponse is part of the portlet spec 2.0
(JSR-286). So when I try to use it I get the following: 

java.lang.NoClassDefFoundError: javax/portlet/StateAwareResponse

I don't have the portlet-api-2.0 dependency in my project. This is why I had used jmock to
mock the response object in my workaround.

As far as a solution goes... I think we create two separate test classes. StrutsPortletJSR168TestCase
and StrutsPortletJSR286TestCase, which is how struts currently handles the dispatchers.

Thoughts?
                
> Unit Testing A Portlet Action Using StrutsTestCase Causes A NullPointerException
> --------------------------------------------------------------------------------
>
>                 Key: WW-3826
>                 URL: https://issues.apache.org/jira/browse/WW-3826
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Portlet
>    Affects Versions: 2.3.4
>         Environment: JUnit 4.8.2 - Struts version 2.3.4
>            Reporter: Bruce Phillips
>            Assignee: Lukasz Lenart
>             Fix For: 2.3.5
>
>
> When running a unit test of a Struts portlet Action using StrutsTestCase the test causes
an error -
> java.lang.NullPointerException at org.apache.struts2.portlet.interceptor.PortletStateInterceptor.intercept(PortletStateInterceptor.java:52)

> (see below for complete stack trace)
> The same test when run with Struts portlet plugin version 2.2.1 passes.
> You can download an example application here:  http://www.brucephillips.name/struts/Struts2CRUDPortletExample_Finish.zip.
 Unzip the example.  In the project's root folder run mvn -e clean test.  The test will pass.
> Modify pom.xml in the project to set the version number of Struts to 2.3.4.  Remove the
dependency on javaassist.  Save the pom.xml
> In the project's root folder run mvn -e clean test.  The test will error.  View the test
report in target/surfire-reports.
> -------------------------------------------------------------------------------
> Test set: com.struts2.tutorial.action.ListEmployeeActionTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.185 sec <<<
FAILURE!
> testExecute(com.struts2.tutorial.action.ListEmployeeActionTest)  Time elapsed: 0.998
sec  <<< ERROR!
> java.lang.NullPointerException
>         at org.apache.struts2.portlet.interceptor.PortletStateInterceptor.intercept(PortletStateInterceptor.java:52)
>         at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
>         at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
>         at com.struts2.tutorial.action.ListEmployeeActionTest.testExecute(ListEmployeeActionTest.java:24)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at junit.framework.TestCase.runTest(TestCase.java:168)
>         at junit.framework.TestCase.runBare(TestCase.java:134)
>         at junit.framework.TestResult$1.protect(TestResult.java:110)
>         at junit.framework.TestResult.runProtected(TestResult.java:128)
>         at junit.framework.TestResult.run(TestResult.java:113)
>         at junit.framework.TestCase.run(TestCase.java:124)
>         at junit.framework.TestSuite.runTest(TestSuite.java:243)
>         at junit.framework.TestSuite.run(TestSuite.java:238)
>         at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
>         at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
>         at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
>         at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:601)
>         at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
>         at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
>         at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
>         at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
>         at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message