Spring Framework端到端测试的良好策略

时间:2013-02-28 01:24:36

标签: spring testing spring-mvc

所以这是一个相当“大”的问题,但我想要完成的是以下内容:

我在tomcat上运行了Spring应用程序,MVC,JDBC(MySQL)和JSP。

我的目标是使用适当的方法测试整个“堆栈”。

到目前为止我使用Selenium来模拟实际用户与应用程序交互(需要一个虚拟帐户),并执行不同的验证,例如,查看页面中是否存在元素,查看是否数据库具有特定值或值是否与数据库匹配。

第一个问题是这实际上是在使用数据库,因此很难测试某些场景。我真的希望能够模拟数据库。它是否模拟特定的帐户配置,数据状态等

第二个问题是,鉴于我使用数据库中的内容,数据不断变化,很难预测行为,因此正确断言

我查看了Spring Test,但它允许在servlet容器外进行测试,因此不需要JSP和Javascript测试。

我看过DBUtils文档,但不确定在这种情况下它是否会对我有帮助

所以,对于我的开发人员,我想问一下提示:

  • 在模拟数据库之上运行selenium测试
  • 每次测试允许不同的配置
  • 保持与Maven / Gradle的兼容性

1 个答案:

答案 0 :(得分:0)

我已经开始使用有序的自动装配功能来支持这种存根。

这基本上是我从过去与之合作的Seam框架中接手的一个想法,但我在春天找不到类似的东西。
我们的想法是拥有一个优先级注释(fw,app,mock,...),用于解析autowired bean的当前实现。这在xml中很简单,但在java配置中却不容易。

因此,我们使用应用程序优先级的正常存储库bean和使用模拟优先级来存储这些类的测试包。 如果两者都在类路径中,则弹簧通常会因重复的bean找到异常而失败。在我们的例子中,扩展beanfactory只使用具有最高优先级的bean。

我不确定弹簧的顺序注释是否可以直接使用,但我还是希望有“定义良好”的优先级范围,所以我们的开发人员会清楚这是什么意思。

!虽然这是一个很好的存根方法,所以用于测试的bean我不会用它来替换数据库定义,而是使用像hsql这样的内存数据库,就像之前提到的一些回答一样。 !