首页 > 解决方案 > Spring mockmvc 测试代码抛出 NoSuchMethodError。它只有设置部分

问题描述

我正在尝试使用下面的基本测试代码测试我的控制器。测试代码没有什么要测试的,只是设置。

我在 spring-test.jar 文件中检查了“org.springframework.web.cors.CorsConfiguration.addAllowedOriginPattern”。

但我运行测试代码,它抛出异常。我用谷歌搜索了它,但没有任何线索弄清楚。你能帮我吗?

junit5,spring和spring-test 5.3.5(最新)


import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.STRICT_STUBS)
public class CompanyControl_Test {
    private MockMvc mockMvc;
    
    
    @BeforeEach
    private void setup() throws Exception {
        this.mockMvc = MockMvcBuilders.standaloneSetup(new CompanyControl()).build();
    }
    
    @Test
    public void test() throws Exception {
        
    }
}

java.lang.NoSuchMethodError: org.springframework.web.cors.CorsConfiguration.addAllowedOriginPattern(Ljava/lang/String;)V 在 org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.(AbstractHandlerMethodMapping.java:88) 在 org.springframework.test.web.servlet.setup.StandaloneMockMvcBuilder$StandaloneConfiguration.getHandlerMapping(StandaloneMockMvcBuilder.java:469) 在 org.springframework。 test.web.servlet.setup.StandaloneMockMvcBuilder.registerMvcSingletons(StandaloneMockMvcBuilder.java:407) 在 org.springframework.test.web.servlet.setup.StandaloneMockMvcBuilder.initWebAppContext(StandaloneMockMvcBuilder.java:385) 在 org.springframework.test.web。 servlet.setup.AbstractMockMvcBuilder.build(AbstractMockMvcBuilder.java:141) 在 base.web.control.admin.CompanyControl_Test.setup(CompanyControl_Test.java:20) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method ) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl。在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:564) 调用(NativeMethodAccessorImpl.java:62)在 org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) 在 org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) 在 org.junit.jupiter.engine .execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) 在 org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) 在 org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod (TimeoutExtension.java:126) 在 org.junit.jupiter.engine 的 org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)。execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) 在 org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) 在 org.junit.jupiter.engine。 execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke( InvocationInterceptorChain.java:45) 在 org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) 在 org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) 在 org .junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) 在 org。junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490) at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475) at org.junit.jupiter.engine .descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195) at org.junit.platform.engine.support .hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 在 org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195) 在 org.junit.jupiter.engine.descriptor。TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java: 65) 在 org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) ) 在 org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) 的 org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)在 org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) 在 org.junit.platform.engine.support.在 org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)。在 org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) 的 java.base/java.util.ArrayList.forEach(ArrayList.java:1378) 处执行(NodeTestTask.java:95)在 org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) 在 org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) 在org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) 在 org.junit.platform.engine.support。org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical 的分层.Node.around(Node.java:137) .ThrowableCollector.execute(ThrowableCollector.java:73) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.execute (NodeTestTask.java:95) 在 java.base/java.util.ArrayList.forEach(ArrayList.java:1378) 在 org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) 在org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) 在 org.junit.platform.engine.support.hierarchical.ThrowableCollector。在 org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively 上执行(ThrowableCollector.java:73)$8(NodeTestTask.java:141)在 org.junit.platform.engine.support.hierarchical.Node.around (Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute( ThrowableCollector.java:73) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) 在 org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java: 95) 在 org.junit.platform.engine.support.hierarchical 的 org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)。HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) 在 org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) 在 org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator. java:107) 在 org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) 在 org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) 在org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) 在 org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) 在 org.junit.platform.launcher。 org.junit.platform 上的 core.DefaultLauncher.execute(DefaultLauncher.java:114)。launcher.core.DefaultLauncher.execute(DefaultLauncher.java:95) 在 org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91) 在 org.junit.platform.launcher.core.SessionPerRequestLauncher。在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.run(TestExecution) 的 org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) 处执行(SessionPerRequestLauncher.java:60) java:41) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)在org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java: 60) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) 在 org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) 在 org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt .internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)在org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java: 60) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) 在 org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) 在 org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt .internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91) 在 org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:60) 在 org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference。在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.runTests(RemoteTestRunner。 java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:91) 在 org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:60) 在 org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference。在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.runTests(RemoteTestRunner。 java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) 的 org.eclipse.jdt.internal.junit.runner.TestExecution.run( TestExecution.java:41) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) 的 org.eclipse.jdt.internal.junit.runner.TestExecution.run( TestExecution.java:41) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)41) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)41) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) 在 org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)

标签: spring-testnosuchmethoderror

解决方案


自答。

我的项目在 java 构建路径中有我的另一个项目作为库。从您的主项目中删除该项目。然后确定。


推荐阅读