如何测试Spring配置中的错误?

Ric*_*eld 6 java testing junit spring

近年来,我一直致力于使用Spring MVC框架编写用Java编写的Web应用程序.这些项目在JUnit和Selenium上有很好的测试覆盖率.但是,有两次Spring配置中的错误已通过测试过程.

在一种情况下,对controllerContext.xml中的父bean进行了更改,这也需要更改两个继承bean.但是所需的更改只针对两个继承bean中的一个.该错误仅在Web应用程序的一个小但关键的部分中可见.后来扩展了Selenium UA测试以直接在Web App中进行检查.在部署之前,但是当错误进入实时环境时已经完成了损坏.

在另一种情况下,设置数据格式所需的属性未通过applicationContext.xml正确注入.唯一可见的错误是从Web应用程序下载的生成报告的日期格式.难以用Selenium进行测试.

使用Spring MVC的一个优点是能够在JUnit测试中设置注入的对象(即模拟对象),但是这并不能告诉您在应用程序在现场运行时实际将要注入的内容环境.

答案可能是集成测试,但过去设置和运行集成测试已经证明是困难的...但这是另一个问题......

所以,我真的很想学习人们如何尝试捕捉Spring配置文件中引入的可能错误.

所以我的问题是:

测试Spring配置中的错误的最佳方法是什么?

Bal*_*ala 5

这个测试用例将起到魔力

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


@ContextConfiguration(locations={"/server-application-context.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringConfigurationTest {

    @Test
    public void testSpringConfiguration() {
    }
}
Run Code Online (Sandbox Code Playgroud)


mat*_*t b 1

只有当有人认为/记得测试这些条件时,您描述的错误类型才会被测试捕获:

在一种情况下,对controllerContext.xml 中的父bean 进行了更改,这也需要对两个继承bean 进行更改。但所需的更改仅对两个继承 bean 之一进行。该错误仅在 Web 应用程序的一小部分但很关键的部分中可见。Selenium UA 测试后来扩展到直接在 Web 应用程序中检查这一点。在部署之前,但由于错误进入了实时环境,损害已经造成。

在另一种情况下,设置数据格式所需的属性未通过 applicationContext.xml 正确注入。唯一可见的错误是从网络应用程序下载的生成报告的日期格式。很难用 Selenium 进行测试。

在这两种情况下,开发人员都进行了更改,但没有验证更改影响的所有地方都没有错误。如何在 JUnit 风格的测试中捕获此类错误,而不依赖于进行更改的人员为他们所犯的错误显式添加测试?换句话说,只有当您记得测试这些类型的错误时,您才能发现它们。

就我个人而言,我认为捕获此类错误的最佳方法是更像 Selenium 的测试,实际调用应用程序并断言正确的行为。

但是,如果您的测试不知道要测试的正确行为,您就无法捕获这样的错误 - 捕获错误需要您首先意识到需要捕获哪些错误。

换句话说,如果测试不知道正确的值是什么,您就无法测试注入的值是否正确。这些测试不会发现人们认为正确的值实际上是错误的情况。