Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用mockito模拟SessionContex会导致ClassNotFoundException_Java_Unit Testing_Junit_Mockito - Fatal编程技术网

Java 使用mockito模拟SessionContex会导致ClassNotFoundException

Java 使用mockito模拟SessionContex会导致ClassNotFoundException,java,unit-testing,junit,mockito,Java,Unit Testing,Junit,Mockito,我从单元测试开始。我对一个类进行了更改,在该类中我没有注入SessionContext,以便在需要时进行查找 @Resource private SessionContext ctx; 现在,在我的测试中,我想注入它,以便模拟查找方法: @Mock private SessionContext ctx; 但当我运行测试时,我得到: NoClassDefFoundError:javax/xml/rpc/handler/MessageContext 位于java.lang.Class.getDe

我从单元测试开始。我对一个类进行了更改,在该类中我没有注入SessionContext,以便在需要时进行查找

@Resource
private SessionContext ctx;
现在,在我的测试中,我想注入它,以便模拟查找方法:

@Mock
private SessionContext ctx;
但当我运行测试时,我得到:

NoClassDefFoundError:javax/xml/rpc/handler/MessageContext 位于java.lang.Class.getDeclaredMethods0(本机方法) privateGetDeclaredMethods(Class.java:2615)位于 getDeclaredMethods(Class.java:1860)位于 org.mockito.cglib.core.reflectils.addAllMethods(reflectils.java:349) 位于org.mockito.cglib.proxy.Enhancer.getMethods(Enhancer.java:427) org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:457)位于 org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) 在 org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217) 位于org.mockito.cglib.proxy.Enhancer.createHelper(Enhancer.java:378) 位于org.mockito.cglib.proxy.Enhancer.createClass(Enhancer.java:318) 在 org.mockito.internal.creation.jmock.ClassImposterizer.createProxyClass(ClassImposterizer.java:110) 在 org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:62) 在 org.powermock.api.mockito.internal.mockcreation.MockCreator.createMethodInvocationControl(MockCreator.java:111) 在 org.powermock.api.mockito.internal.mockcreation.MockCreator.mock(MockCreator.java:60) 位于org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:143) 在 org.powermock.api.extension.listener.AnnotationEnabler.standardInject(AnnotationEnabler.java:84) 在 org.powermock.api.extension.listener.AnnotationEnabler.beforeTestMethod(AnnotationEnabler.java:51) 在 org.powermock.tests.utils.impl.PowerMockTestNotifierImpl.notifyBeforeTestMethod(PowerMockTestNotifierImpl.java:90) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:292) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82) 在 org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runbeforesthenTestthenAfter(PowerMockJUnit44RunnerDelegateImpl.java:282) 在 org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) 位于org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.invokeTestMethod(powermockjunit44runnerdelegateinpl.java:207) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.runMethods(powermockjunit44runnerdelegateinpl.java:146) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl$1.run(powermockjunit44runnerdelegateinpl.java:120) 在 org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) 在 org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) 在 org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.run(powermockjunit44runnerdelegateinpl.java:118) 在 org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:104) 在 org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:53) 在 org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:53) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 原因:java.lang.ClassNotFoundException: javax.xml.rpc.handler.MessageContext位于 java.net.URLClassLoader$1.run(URLClassLoader.java:366)位于 java.net.URLClassLoader$1.run(URLClassLoader.java:355)在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:354)位于 loadClass(ClassLoader.java:425)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)位于 loadClass(ClassLoader.java:358)。。。39多

我觉得很奇怪,因为我有所有需要的依赖项(这段代码在实际应用程序中工作)


如何使用mockito模拟和注入SessionContext?(我无法更改模拟框架)。

我也遇到了同样的问题,并通过添加一个仅依赖于测试范围的依赖项来解决

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-ejb_2.1_spec</artifactId>
    <version>1.1</version>
    <scope>test</scope>
</dependency>

org.apache.geronimo.specs
geronimo-ejb_2.1_规范
1.1
测试

我也遇到了同样的问题,并通过添加一个仅对测试范围的依赖项来解决

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-ejb_2.1_spec</artifactId>
    <version>1.1</version>
    <scope>test</scope>
</dependency>

org.apache.geronimo.specs
geronimo-ejb_2.1_规范
1.1
测试

如果您使用的是jboss ee 7规范,那么您可能会遇到这个问题。它以前包含在JBossEE6规范中,但有些是如何从EE7中删除的(我还没有找到它)

org.jboss.spec
jboss-javaee-all-7.0
要解决此问题,请添加以下依赖项

    <dependency>
        <groupId>org.jboss.spec.javax.xml.rpc</groupId>
        <artifactId>jboss-jaxrpc-api_1.1_spec</artifactId>
        <version>1.0.1.Final</version>
        <scope>provided</scope>
    </dependency>

org.jboss.spec.javax.xml.rpc
jbo