所以这是一个相当“大”的问题,但我想要完成的是以下内容:
我在tomcat上运行了Spring应用程序,MVC,JDBC(MySQL)和JSP。
我的目标是使用适当的方法测试整个“堆栈”。
到目前为止我使用Selenium来模拟实际用户与应用程序交互(需要一个虚拟帐户),并执行不同的验证,例如,查看页面中是否存在元素,查看是否数据库具有特定值或值是否与数据库匹配。
第一个问题是这实际上是在使用数据库,因此很难测试某些场景。我真的希望能够模拟数据库。它是否模拟特定的帐户配置,数据状态等
第二个问题是,鉴于我使用数据库中的内容,数据不断变化,很难预测行为,因此正确断言
我查看了Spring Test,但它允许在servlet容器外进行测试,因此不需要JSP和Javascript测试。
我看过DBUtils文档,但不确定在这种情况下它是否会对我有帮助
所以,对于我的开发人员,我想问一下提示:
答案 0 :(得分:0)
我已经开始使用有序的自动装配功能来支持这种存根。
这基本上是我从过去与之合作的Seam框架中接手的一个想法,但我在春天找不到类似的东西。
我们的想法是拥有一个优先级注释(fw,app,mock,...),用于解析autowired bean的当前实现。这在xml中很简单,但在java配置中却不容易。
因此,我们使用应用程序优先级的正常存储库bean和使用模拟优先级来存储这些类的测试包。 如果两者都在类路径中,则弹簧通常会因重复的bean找到异常而失败。在我们的例子中,扩展beanfactory只使用具有最高优先级的bean。
我不确定弹簧的顺序注释是否可以直接使用,但我还是希望有“定义良好”的优先级范围,所以我们的开发人员会清楚这是什么意思。
!虽然这是一个很好的存根方法,所以用于测试的bean我不会用它来替换数据库定义,而是使用像hsql这样的内存数据库,就像之前提到的一些回答一样。 !