是否有一种通用的方法来验证(基于xml的)弹簧配置是否有效?

时间:2017-02-07 11:05:32

标签: java spring validation spring-mvc

问题:是否有一种通用方法来验证(基于xml的)弹簧配置是否有效?

进一步说明: 使用“有效”我的意思是,如果xml本身是有效的(我不谈论xsd验证),我的意思是更“逻辑有效”,例如如果所有引用的类都可用,或者特定引用可用/可以解析。

此问题的背景是针对spring-mvc应用程序的CI环境中的QA流程:

假设开发人员在类名中有拼写错误,或者webcontext配置文件中的引用不是唯一的,并且他提交了此更改。现在触发了自动构建:

  1. 应用程序成功编译
  2. 单元测试为“绿色”(因为它们不需要任何弹簧配置)
  3. 集成测试是“绿色”(因为集成测试不依赖于webcontext配置)
  4. 功能/回归测试开始
  5. 在目前的设置中,我们会在步骤4中注意到这个简单的拼写错误 - 但要达到这一点是非常耗时的。

    如果有一个机制/工具可以验证弹簧上下文是否可以加载以节省一些时间,那将会很棒。

2 个答案:

答案 0 :(得分:0)

  

集成测试不依赖于webcontext配置

我的集成测试针对已部署的应用程序运行。如果您想测试Web上下文,那么...测试它。细节取决于您想要测试的内容。

  • 您可以使用Maven或任何构建工具在测试环境中部署应用程序,然后再运行集成测试。

  • 您可以使用像Grizzly这样的轻量级服务器,在测试类中重复使用它。

由于这些测试成本很高,我通常会检查可以部署应用程序并开始上下文。我使用Grizzly并在其他单元测试中运行此测试,以便尽快检测到问题。根据具体情况,可以添加其他类似的测试用例。

答案 1 :(得分:0)

一种简单的方式来预先验证"集成测试之前的XML配置是使用SpringJUnit4ClassRunner使用JUnit测试。这可以在弹簧测试JAR中找到。

e.g。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/foo.xml" })
public class XmlValidate {

    @Test
    public void loadsWithoutError() {
        // nothing to do, SpringJUnit4ClassRunner will throw exception
        // if there are any class-not-found exceptions etc.
    }
}