Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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 使用MockMvcBuilders.standaloneSetup时堆栈溢出错误_Java_Spring_Spring Boot_Unit Testing_Spring Mvc - Fatal编程技术网

Java 使用MockMvcBuilders.standaloneSetup时堆栈溢出错误

Java 使用MockMvcBuilders.standaloneSetup时堆栈溢出错误,java,spring,spring-boot,unit-testing,spring-mvc,Java,Spring,Spring Boot,Unit Testing,Spring Mvc,我在为我的控制器编写单元测试时遇到了一些问题。不幸的是,我没有使用maven或gradle,而是使用Ant,因此我需要下载jar并手动添加每个依赖项。我用来做测试的是MockMvc,然后我用standalonesetup方法得到控制器并构建它。然而,当我第一次尝试运行它时,我得到了一个异常 noSuchMethodError: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.Em

我在为我的控制器编写单元测试时遇到了一些问题。不幸的是,我没有使用maven或gradle,而是使用Ant,因此我需要下载jar并手动添加每个依赖项。我用来做测试的是MockMvc,然后我用standalonesetup方法得到控制器并构建它。然而,当我第一次尝试运行它时,我得到了一个异常

noSuchMethodError: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.EmbeddedValueResolver.
为了解决这个问题,我尝试下载了spring上下文,其中包含这个requestMappingHandlerMapping.EmbeddedValueResolver类。它用noSuchMethodError解决了问题,但现在我得到了StackOverFlow.Error

这是我的课程的一个例子


@Controller
public class Controller {

 @RequestMapping("/")
 @RequestBody
 public String message(@RequestHeader HttpHeaders requestHeader, @RequestParam String message)
 return "Something";
}
我的测试班是

public class controllerTest {
 
 private MockMvc mvc;

 //Point where I'm getting the error
 @Before
 public void setup(){
 this.mvc = MockMvcBuilders.standaLoneSetup(new Controller()).build()
}
}


有人能帮我找出为什么会出现这些错误吗?

我强烈建议离开Ant,开始使用Maven(或Gradle),或者至少引入Ivy来下载依赖项。您面临的风险(可能已经是这样)是,您正在混合来自不同Spring版本的JAR,这会导致奇怪的错误,或者使用不兼容的JAR版本(或支持框架)。您的问题也说明了SpringBoot,但您真的在使用SpringBoot吗?谢谢您的评论。不幸的是,我工作的公司使用了很多旧东西,有很多应用程序,有些使用spring boot,有些不使用,所以对于那些不使用的,我们需要通过xml文件设置所有配置bean,而不是它们能够“通信”一些方式。但迁移到Maven或Gradle是一项正在进行的工作