I do not know why I have this error with mockito
java.lang.NoClassDefFoundError: org/objenesis/ObjenesisStd at org.mockito.internal.creation.jmock.ClassImposterizer.<init>(ClassImposterizer.java:36) at org.mockito.internal.creation.jmock.ClassImposterizer.<clinit>(ClassImposterizer.java:29) at org.mockito.internal.util.MockCreationValidator.isTypeMockable(MockCreationValidator.java:17) at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:21) at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:133) at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:127) at org.mockito.internal.MockitoCore.mock(MockitoCore.java:50) at org.mockito.Mockito.mock(Mockito.java:1243) at org.mockito.Mockito.mock(Mockito.java:1120) at fr.oap.SubscriptionTest.testGetSubscriptionById(SubscriptionFactoryTest.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:606) at junit.framework.TestCase.runTest(TestCase.java:176) at junit.framework.TestCase.runBare(TestCase.java:141) at junit.framework.TestResult$1.protect(TestResult.java:122) at junit.framework.TestResult.runProtected(TestResult.java:142) at junit.framework.TestResult.run(TestResult.java:125) at junit.framework.TestCase.run(TestCase.java:129) at junit.framework.TestSuite.runTest(TestSuite.java:255) at junit.framework.TestSuite.run(TestSuite.java:250) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 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) Caused by: java.lang.ClassNotFoundException: org.objenesis.ObjenesisStd at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 29 more
About my test class:
import junit.framework.TestCase; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import fr.aop.subscription.AbstractSubscription; public class SubscriptionTest extends TestCase { @Test public void testGetSubscriptionById() { ArgumentCaptor<AbstractSubscription> arg=ArgumentCaptor.forClass(AbstractSubscription.class); Subscription objMock=Mockito.mock(Subscription.class); Mockito.when(objMock.getSubscribById(1)).thenReturn(arg.getValue()); } }
And about the getSubscribById whitch method is in the Subscription class:
@Override public AbstractSubscription getSubscriptionById(final Integer id) { this.log.debug("BEGIN: getSubscriptionById id = " + id); AbstractSubscription obj = null; if (id != null) { final StringBuilder queryString = new StringBuilder("select c from AbstractSubscription c "); try { queryString.append("where c.id = :id"); Query query = this.getEntityManager().createQuery(queryString.toString()); query = query.setParameter("id", id); obj = (AbstractSubscription) query.getSingleResult(); } catch (final Exception exc) { } } return obj; }
when I initialize the Subcription class, it requires me to connect to the database, so I want to avoid this and look for a solution like mockito
unit-testing junit testing mockito mocking
Tinyos
source share