2

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

我有一个运行在 tomcat 上的 Spring 应用程序、MVC、JDBC (MySQL) 和 JSP。

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

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

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

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

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

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

因此,对于我的开发人员,我想请教以下技巧:

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

1 回答 1

0

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

这基本上是我从过去使用的 Seam 框架中接管的一个想法,但我在春天找不到类似的东西。
这个想法是有一个优先注释(fw,app,mock,...),它将用于解析自动装配bean的当前实现。这在 xml 中已经很容易了,但在 java config 中却不是。

因此,我们将正常的存储库 bean 放入应用程序优先级和一个测试包,以模拟优先级对这些类进行存根。如果两者都在类路径中,spring 通常会因发现重复 bean 异常而失败。在我们的例子中,扩展的 beanfactory 只是采用具有最高优先级的 bean。

我不确定是否可以直接使用 spring 的 order annotation,但无论如何我更喜欢“定义良好”的优先级范围,所以我们的开发人员会清楚这是什么意思。

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

于 2013-02-28T06:21:20.033 回答