Hi,

the setup is unit testing with maven + spring + struts using StrutsSpringTestCase super class (which is an extended org.apache.struts2.StrutsTestCase with access to spring config).

So this is working well with actions not having the methodname configured.

Whenever I do configure such a method the code in AnnotationValidationInterceptor(struts-core-2.2.3) fails in line 83++ after failing to instantiate the method which is NOT named "execute" this time from the proxy.

Environment:
1. struts action configured using a method name.
2. action test based on a StrutsTestCase (using those mock objects)
3. set a breakpoint on line 83 in the annotationvalidationinterceptor.

However, the same code exists in DefaultActionInvocation line 437 and is used to instantiate the method for executing the action, so disabling the validation simply postpones the very same issue to a later point in the code
as you can see in the stacktrace below!

It seems that the StrustTestcase cannot handle actions with a method name configured!


Thread [main] (Suspended)
    DefaultActionInvocation.invokeAction(Object, ActionConfig) line: 433
    DefaultActionInvocation.invokeActionOnly() line: 291
    DefaultActionInvocation.invoke() line: 254
    DefaultWorkflowInterceptor.doIntercept(ActionInvocation) line: 176
DefaultWorkflowInterceptor(MethodFilterInterceptor).intercept(ActionInvocation) line: 98
    DefaultActionInvocation.invoke() line: 248
StrutsConversionErrorInterceptor(ConversionErrorInterceptor).intercept(ActionInvocation) line: 133
    DefaultActionInvocation.invoke() line: 248
    ParametersInterceptor.doIntercept(ActionInvocation) line: 207
ParametersInterceptor(MethodFilterInterceptor).intercept(ActionInvocation) line: 98
    DefaultActionInvocation.invoke() line: 248
ActionMappingParametersInteceptor(ParametersInterceptor).doIntercept(ActionInvocation) line: 207 ActionMappingParametersInteceptor(MethodFilterInterceptor).intercept(ActionInvocation) line: 98
    DefaultActionInvocation.invoke() line: 248
    StaticParametersInterceptor.intercept(ActionInvocation) line: 190
    DefaultActionInvocation.invoke() line: 248
    MultiselectInterceptor.intercept(ActionInvocation) line: 75
    DefaultActionInvocation.invoke() line: 248
    CheckboxInterceptor.intercept(ActionInvocation) line: 94
    DefaultActionInvocation.invoke() line: 248
    ModelDrivenInterceptor.intercept(ActionInvocation) line: 100
    DefaultActionInvocation.invoke() line: 248
    ScopedModelDrivenInterceptor.intercept(ActionInvocation) line: 141
    DefaultActionInvocation.invoke() line: 248
    DebuggingInterceptor.intercept(ActionInvocation) line: 270
    DefaultActionInvocation.invoke() line: 248
    ChainingInterceptor.intercept(ActionInvocation) line: 145
    DefaultActionInvocation.invoke() line: 248
    PrepareInterceptor.doIntercept(ActionInvocation) line: 171
PrepareInterceptor(MethodFilterInterceptor).intercept(ActionInvocation) line: 98
    DefaultActionInvocation.invoke() line: 248
    I18nInterceptor.intercept(ActionInvocation) line: 176
    DefaultActionInvocation.invoke() line: 248
    ServletConfigInterceptor.intercept(ActionInvocation) line: 164
    DefaultActionInvocation.invoke() line: 248
    AliasInterceptor.intercept(ActionInvocation) line: 190
    DefaultActionInvocation.invoke() line: 248
    ExceptionMappingInterceptor.intercept(ActionInvocation) line: 187
    DefaultActionInvocation.invoke() line: 248
    StrutsActionProxy.execute() line: 52
    ContentActionTest.doContentDelete() line: 158
    ContentActionTest.testContentLifeCycle() line: 179
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
    NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
    DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
    Method.invoke(Object, Object...) line: 597
    FrameworkMethod$1.runReflectiveCall() line: 44
    FrameworkMethod$1(ReflectiveCallable).run() line: 15
    FrameworkMethod.invokeExplosively(Object, Object...) line: 41
    InvokeMethod.evaluate() line: 20
    RunBefores.evaluate() line: 28
    RunBeforeTestMethodCallbacks.evaluate() line: 74
    RunAfterTestMethodCallbacks.evaluate() line: 82
    SpringRepeat.evaluate() line: 72
SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 240 SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object, RunNotifier) line: 50
    ParentRunner$3.run() line: 193
    ParentRunner$1.schedule(Runnable) line: 52
SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier) line: 191
    ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42
    ParentRunner$2.evaluate() line: 184
    RunBeforeTestClassCallbacks.evaluate() line: 61
    RunAfterTestClassCallbacks.evaluate() line: 70
    SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line: 236
    SpringJUnit4ClassRunner.run(RunNotifier) line: 180
    JUnit4TestSet.execute(Class, RunNotifier, String) line: 53
JUnit4Provider.executeTestSet(Class, RunListener, ClassLoader, RunNotifier) line: 119
    JUnit4Provider.invoke(Object) line: 101
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
    NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
    DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
    Method.invoke(Object, Object...) line: 597
ProviderFactory$ClassLoaderProxy.invoke(Object, Method, Object[]) line: 103
    $Proxy0.invoke(Object) line: not available
SurefireStarter.invokeProvider(Object, ClassLoader, ClassLoader) line: 150
    SurefireStarter.runSuitesInProcess() line: 91
    ForkedBooter.main(String[]) line: 69

On 17/06/2011 02:17, Maurizio Cucchiara wrote:
Hi,
could you send the stacktrace exception/error?
What are you using to execute your test (f.i. maven, eclipse, etc)?

Maurizio Cucchiara

Il giorno 17/giu/2011 02.09, "UV"<uvw...@googlemail.com>  ha scritto:
Hi,

When I try to test an action with a method="actionMethod" attribute
configured in a StrutsTestCase
the AnnotationValidationInterceptor fails in getActionMethod#75 cause it
cannot find the method
using the configured name on the proxy used in the testing framework.

My only workaround so far was using execute() method on actions only and
split all actions up into separate files.

Is this a known bug?

Is there a better workaround?

Thanks for any pointers.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to