Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 Powermock方法替换找不到类_Java_Unit Testing_Mockito_Powermock - Fatal编程技术网

Java Powermock方法替换找不到类

Java Powermock方法替换找不到类,java,unit-testing,mockito,powermock,Java,Unit Testing,Mockito,Powermock,我正试图用PowerMock替换这样一个方法 @RunWith(PowerMockRunner.class) @PrepareForTest(HeaderVO.Builder.class) public void TestClass { public Builder fromHeaders(Map<String, String> requestHeadersMap) { return null; } // snip replace(

我正试图用PowerMock替换这样一个方法

@RunWith(PowerMockRunner.class)
@PrepareForTest(HeaderVO.Builder.class)
public void TestClass {
    public Builder fromHeaders(Map<String, String> requestHeadersMap) {
        return null;
    } 

    // snip
    replace(method(HeaderVO.Builder.class, "fromHeaders")).with(
                        method(
                        TestClass.class,
                        "fromHeaders"));
@RunWith(PowerMockRunner.class)
@PrepareForTest(总承包商等级)
公共void测试类{
公共生成器fromHeaders(映射请求HeadersMap){
返回null;
} 
//剪断
将(方法(HeaderVO.Builder.class,“fromHeaders”))替换为(
方法(
TestClass.class,
"表格");;
但是,由于HeaderVO的另一个方法接受HttpServletRequest类型的参数,因此

java.lang.IllegalStateException: Failed to transform class with name path.to.my.test.class.HeaderVO$Builder. Reason: cannot find javax.servlet.http.HttpServletRequest
        at javassist.ClassPool.get(ClassPool.java:450)
        at javassist.bytecode.Descriptor.toCtClass(Descriptor.java:592)
        at javassist.bytecode.Descriptor.getParameterTypes(Descriptor.java:439)
        at javassist.CtBehavior.getParameterTypes(CtBehavior.java:298)
        at javassist.CtBehavior.insertBefore(CtBehavior.java:745)
        at javassist.CtBehavior.insertBefore(CtBehavior.java:730)
        at org.powermock.core.transformers.impl.MainMockTransformer.modifyMethod(MainMockTransformer.java:207)
        at org.powermock.core.transformers.impl.MainMockTransformer.allowMockingOfStaticAndFinalAndNativeMethods(MainMockTransformer.java:143)
        at org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:66)
        at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:215)
        at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:147)
        at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
        at java.lang.Class.privateGetPublicMethods(Class.java:2571)
        at java.lang.Class.getMethods(Class.java:1429)
        at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.getTestMethods(PowerMockJUnit44RunnerDelegateImpl.java:95)
        at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.<init>(PowerMockJUnit44RunnerDelegateImpl.java:71)
        at org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl.<init>(PowerMockJUnit49RunnerDelegateImpl.java:29)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:143)
        at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:39)
        at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:217)
        at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:59)
        at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
        at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:33)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
        at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
        at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
        at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
        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:601)
        at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
        at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
        at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
        at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
        at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
java.lang.IllegalStateException:未能将名为path.to.my.test.class.HeaderVO$Builder的类转换为。原因:找不到javax.servlet.http.HttpServletRequest
获取(ClassPool.java:450)
位于javassist.bytecode.Descriptor.toCtClass(Descriptor.java:592)
位于javassist.bytecode.Descriptor.getParameterTypes(Descriptor.java:439)
位于javassist.CtBehavior.getParameterTypes(CtBehavior.java:298)
位于javassist.CtBehavior.insertBefore(CtBehavior.java:745)
位于javassist.CtBehavior.insertBefore(CtBehavior.java:730)
位于org.powermock.core.transformers.impl.MainMockTransformer.modifyMethod(MainMockTransformer.java:207)
位于org.powermock.core.transformers.impl.MainMockTransformer.AllowMockingofStaticAndFinanLandNativeMethods(MainMockTransformer.java:143)
位于org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:66)
位于org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:215)
位于org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:147)
位于org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
位于java.lang.Class.getDeclaredMethods0(本机方法)
位于java.lang.Class.privateGetDeclaredMethods(Class.java:2451)
位于java.lang.Class.privateGetPublicMethods(Class.java:2571)
位于java.lang.Class.getMethods(Class.java:1429)
位于org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.getTestMethods(powermockjunit44runnerdelegateinpl.java:95)
位于org.powermock.modules.junit4.internal.impl.powermockjunit44runnerdelegateinpl.(powermockjunit44runnerdelegateinpl.java:71)
位于org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl。(PowerMockJUnit49RunnerDelegateImpl.java:29)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
位于org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:143)
位于org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:39)
位于org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:217)
位于org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl。(JUnit4TestSuiteChunkerImpl.java:59)
位于org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner。(AbstractCommonPowerMockRunner.java:32)
位于org.powermock.modules.junit4.PowerMockRunner。(PowerMockRunner.java:33)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:525)
位于org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
位于org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.builders.AllDefaultPossibilityBuilder.runnerForClass(AllDefaultPossibilityBuilder.java:26)
位于org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
位于org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
位于org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:262)
位于org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
位于org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
位于org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
位于org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
位于org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
位于org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)

这应该如何工作,我如何才能让PowerMock/javassist感知HttpServletRequest?它在类路径中,在其他方面工作正常。

我真傻。我错了,它不在类路径中