Hi,
I now get an error message:
testUpdate(SipDispatcherTest) Time elapsed: 0.156 sec <<< ERROR!
java.lang.ClassCastException: java.lang.Object
at com.ericsson.wong.sip.SipDisp.service(SipDisp.java:32)
at SipDispatcherTest.testUpdate(SipDispatcherTest.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:36)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
Is it an error in my code or in the test?
Line 32 is :
if (session != null) {
servletName = (String) session.getApplicationSession().getAttribute(SIP_APP);
}
cheers,
Test class code:
@RunWith(JMock.class)
public class SipDispatcherTest {
Mockery context = new JUnit4Mockery();
private static final String SIP_APP = "SipDispatcher.App";
private static final String CDG = "CDG";
@Test
public void testUpdate() throws ServletException,IOException{
final SipServletRequest mockSipRequest = context.mock(SipServletRequest.class);
final SipSession mockSipSession = context.mock(SipSession.class);
SipDisp sipDispatcher = new SipDisp();
// define expectations on mocks
context.checking(new Expectations(){{
one(mockSipRequest).getSession(false);
}});
//session.getApplicationSession()
sipDispatcher.service(mockSipRequest, null);
}
Class under test code:
public class SipDisp extends SipServlet{
private static final String SIP_APP = "SipDispatcher.App";
private static final long serialVersionUID = 2999888825911125199L;
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
SipServletRequest request = (SipServletRequest) req;
SipServletResponse response = (SipServletResponse) resp;
SipServlet destination = null;
String servletName = null;
SipSession session = getSession(request, response, false);
if (session != null) {
servletName = (String) session.getApplicationSession().getAttribute(SIP_APP);
}
}
private SipSession getSession(SipServletRequest request, SipServletResponse response, boolean create) {
return (request != null ? request.getSession(create) : response.getSession(create));
}
}
Ps. Line 32 is where I bump into problems. I cannot make my test simpler. So please do't tell me to make it simpler but show me then.
cheers,
//mike