问题:是否有一种通用方法来验证(基于xml的)弹簧配置是否有效?
进一步说明: 使用“有效”我的意思是,如果xml本身是有效的(我不谈论xsd验证),我的意思是更“逻辑有效”,例如如果所有引用的类都可用,或者特定引用可用/可以解析。
此问题的背景是针对spring-mvc应用程序的CI环境中的QA流程:
假设开发人员在类名中有拼写错误,或者webcontext配置文件中的引用不是唯一的,并且他提交了此更改。现在触发了自动构建:
在目前的设置中,我们会在步骤4中注意到这个简单的拼写错误 - 但要达到这一点是非常耗时的。
如果有一个机制/工具可以验证弹簧上下文是否可以加载以节省一些时间,那将会很棒。
答案 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.
}
}