当前位置: 首页 > 面试题库 >

Spring @ContextConfiguration如何为xml放置正确的位置

令狐献
2023-03-14
问题内容

在我们的项目中,我们正在编写测试以检查控制器是否返回正确的模型视图

@Test
    public void controllerReturnsModelToOverzichtpage()
    {
        ModelAndView modelView = new ModelAndView();
        KlasoverzichtController controller = new KlasoverzichtController();
        modelView = controller.showOverzicht();

        assertEquals("Klasoverzichtcontroller returns the wrong view ", modelView.getViewName(), "overzicht");
    }

这将返回异常null。

现在,我们正在配置@contextconfiguration,但是我们不知道如何加载位于src \ main \ webapp \ root \ WEB-
INF \ root-context.xml的正确xml。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class TestOverzichtSenario{
....

该文档不够清晰,难以理解

关于如何确保contextannotation加载正确的xml的任何建议?

编辑v2

我将配置.xml文件从webINF文件夹复制到了

src\main\resources\be\..a bunch of folders..\configuration\*.xml

并将webinf中的web.xml更改为

<param-name>contextConfigLocation</param-name>
<param-value>
            classpath*:configuration/root-context.xml
            classpath*:configuration/applicationContext-security.xml
        </param-value>

现在得到错误

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]
    org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:341)
    org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
    org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
    org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
    org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
    org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)
    org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
    org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    com.springsource.insight.collection.tcserver.request.HttpRequestOperationCollectionValve.invoke(HttpRequestOperationCollectionValve.java:80)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:379)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)

问题答案:

这就是不将配置放入的原因webapp

据我所知,没有很好的方法可以webapp从单元测试中访问文件夹中的文件。您可以src/main/resources改用配置,以便可以从单元测试(如docs中所述)以及从webapp(使用中的classpath:前缀contextConfigLocation)访问它。

也可以看看:

  • 4.7应用程序上下文和资源路径


 类似资料:
  • 问题内容: 我已经制作了一个自定义的nbconvert模板,并希望可以从启动实用程序的任何文件夹中对其进行访问。我应该在哪里放置模板? 我在官方文档中找不到任何内容。我已经尝试过平常的地方jupyter CONFIGS一样,,,无济于事。 到目前为止,我唯一找到的地方是python包所在的文件夹: 如果我在此处创建目录并将模板放在其中,则效果很好。但这是一个丑陋的hack,每次我更新nbconve

  • 我目前正在做一个游戏,你必须避免小行星。我开始使用任意单位。 此外,我正在使用一个: 在游戏屏幕中,小行星看起来变形了:

  • 我刚刚进入Minecraft的moding,我正在写一个简单的mod,你可以控制和右键点击黑曜石上的鹅卵石获得一个“岩石”项目。预期的功能是当玩家执行此动作时,他们将消耗一块鹅卵石并获得一块岩石,而不需要放下鹅卵石。这是相当有效的,虽然我得到一个奇怪的效果,当我激活它。在服务器移除块之前,客户机似乎会让它看起来像是放置了一个刻度左右的块。(至少,反正看起来就是这样。) 这是我的代码: 正如我所说的

  • 问题更新如下问题下的备注。 当我试图与Activiti框架一起运行spring-boot2项目时,我收到的问题描述得稍微低一些。 首先,这个项目是使用Spring初始值设定项创建的,所有进一步的开发都是使用本教程完成的-如何使用Spring Boot启动Activiti Spring JPA。 本教程描述了如何与Spring-boot 1. x一起使用它。在这个条件下(sping-boot-1.

  • 我是一个初学者程序员,我试图做一个简单的计算器,但由于某种原因,按钮似乎不能正常工作,它们要么消失,填满整个面板,要么设置在错误的位置。奇怪的是,当我悬停并在按钮上点击鼠标时,按钮就会出现。我可能会错过一些非常明显的东西,但请帮助(此外,代码不是很干净)。谢谢你! 主要的 计算器按钮 窗

  • 问题内容: 遵循OnlyOffice帮助中心的说明,将创建由浏览器声明为无效的安全证书,因为它是自签名的。 目的是在适用于NextCloud的Docker上使用OnlyOffice的服务器,该服务器已在另一台服务器上正常运行。 当前,已在说明建议的目录中创建证书: 我已经按照所有给定的步骤进行操作,但是它不起作用。 有没有办法使用LetsEncrypt代替自签名证书? 我不是IT管理人员,我是一个