• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Junit testing for Struts2

 
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Junit testing for Struts2

Hi i am using Junit 4 to test struts2 action class.

I have BaseStrutsTest.java . my TestLoginAction.java extends BasdeStrutsTest.java
------------------------------------

----------------------
TestLoginAction.java
-----------




I tun "TestLoginAction.java" in Eclipse.. using "Run As " -- > "Junit .." it throws the "NullPoniterException" as dispatcher.init() method in "BaseStrutsTest.java"

Can you please hlep me for it ASAP?

Rgd,
Jignesh
 
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Can you post the actual stack trace? It can't be that dispatcher is null since it is initialized one line above.

I do see one problem. The @Test shouldn't be there. Since you are extending TestCase, this is a JUnit 3.8 test. And @Test is a JUnit 4 concept.
 
jignesh tandel
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
HI, Thanks for reply..

here is the actual stack trace.

java.lang.NullPointerException
at com.opensymphony.xwork2.util.ClassLoaderUtil.getResource(ClassLoaderUtil.java:86)
at com.opensymphony.xwork2.util.location.LocationUtils.getLocation(LocationUtils.java:288)
at com.opensymphony.xwork2.util.location.LocationUtils.getLocation(LocationUtils.java:202)
at com.opensymphony.xwork2.XWorkException.<init>(XWorkException.java:93)
at com.opensymphony.xwork2.XWorkException.<init>(XWorkException.java:76)
at com.opensymphony.xwork2.config.ConfigurationException.<init>(ConfigurationException.java:64)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:135)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
at com.junit.testing.BaseStrutsTestCase.setUp(BaseStrutsTestCase.java:84)
at junit.framework.TestCase.runBare(TestCase.java:132)
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:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

--------------------------------------
Alternate, I used "StrutsTestCase". I extends it in"TestLoginAction"
there i show compilation error at
ActionProxy proxy = getActionProxy("/Login.action");

Please post your valuable commet in both the case
 
Jeanne Boyarsky
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It's not obvious from the stack trace. The next step from the stack trace is to see what is wrong. This tells us that the problem is that the test can't find some file. I'd double check the classpath.
at com.opensymphony.xwork2.util.ClassLoaderUtil.getResource(ClassLoaderUtil.java:86)

If that doesn't work, you may need to look at the source code (open source is helpful) to see what specifically it is trying to load.
 
jignesh tandel
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Jeanne

I tried with mention code. but there is still nullPointerexception during initalize the dispatcher. then i follow the other approach mention in below link.
http://www.javaranch.com/journal/2003/12/UnitTestingDatabaseCode.html

I successed with initail testing with loginDAO. now i would like to test addleaverecord() from DAO. so, do i need to mock the request ? or hard code the values in bean and passed that bean to addleaveracor() method,
if need to mock the request then how ? if i need to hard code the values then it is burden on developers to right code with testcase also?

which approach is feasible?

Can you please provide any example to test struts 2 with Junit ?

i asked more question :-)
 
Jeanne Boyarsky
author & internet detective
Posts: 41860
908
Eclipse IDE VI Editor Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
In the case of that article, it doesn't matter whether you are using Struts2 or something else because you aren't testing the framework; just your logic. I like this approach. I test the framework through a browser. Either approach is feasible though.

When you are mocking you do hard code values. However the person writing this low level unit test is doing so at the same time as the code. It is on his/her mind.

I skipped the questions about how you'd test your code. As near as I can tell the code you are trying to test isn't in the thread. And the thread is long. When posting for help, it is best to have short self contained examples so someone can easily read them and see what you are trying.
 
reply
    Bookmark Topic Watch Topic
  • New Topic