Newbie - Returning value problem
Hi There,
I am newbie in JMock and I had problem to make a simple test returning a java.util.List.
I was following the link http://www.jmock.org/returning.html, but I hadn't success.
Below following my code, it is just a test.
Firstly, I have my interface
public interface DAO {
public List<String> getList();
}
Also, I have a concrete class which uses this DAO.
public class Principal {
private DAO dao;
public List<String> getList() {
return dao.getList();
}
//--Getters and Setters for DAO object
I would like to test the getList() method above.
It is really a simple object. It simply gets the values from DAO and return it.
Now, following my TestCase
<at> RunWith(JMock.class)
public class TestPrincipal
{
Mockery context = new JUnit4Mockery();
<at> Test
public void testSoma() {
final DAO dao = context.mock(DAO.class);
Principal p = new Principal();
p.setDao(dao);
final List<String> list = new ArrayList<String>();
list.add("junior");
context.checking(new Expectations() {{
&nbs
p; one(dao).getList();
will(returnIterator(list));
}});
assertThat(p.getList(), equalTo(list));
}
}
As you can see above, I am using JUnit 4 and JMock 2.
When I try to run the TestCase, I got the following exception:
java.lang.IllegalStateException: tried to return an incompatible value: expected a java.util.List but returned a java.util.AbstractList$Itr
at org.jmock.api.Invocation.reportTypeError(Invocation.java:151)
at org.jmock.api.Invocation.checkReturnTypeCompatibility(Invocation.java:119)
at org.jmock.internal.InvocationExpectation.invoke(InvocationExpectation.java:127)
at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDis
patcher.java:52)
at org.jmock.Mockery.dispatch(Mockery.java:204)
at org.jmock.Mockery.access$000(Mockery.java:37)
at
org.jmock.Mockery$MockObject.invoke(Mockery.java:246)
at org.jmock.internal.InvocationDiverter.invoke(InvocationDiverter.java:27)
at org.jmock.internal.ProxiedObjectIdentity.invoke(ProxiedObjectIdentity.java:36)
at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33)
at $Proxy2.getList(Unknown Source)
at jmocktest.Principal.getList(Principal.java:14)
at jmocktest.TestPrincipal.testSoma(TestPrincipal.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at sun.refle
ct.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
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.inter
nal.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.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
sts(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Does anybody can help me please?
I appreciate any help
Best Regards
Junior
Abra sua conta no
Yahoo! Mail, o único sem limite de espaço para armazenamento!