java中的后端webapp测试[需要工具]

时间:2011-04-12 05:00:47

标签: java testing junit dbunit

我想为我的java web应用程序创建一个测试套件。它是一个具有JDBC连接的JSP应用程序。我的要求如下,

1 - 我应该能够通过我的模型测试我的数据库逻辑(查询等)。

2 - 如果我可以测试我的.jsp页面(如果可能的话),那就很棒了

经过一些研究后我发现DBUnit对数据库后端系统测试有好处,但不幸的是我找不到任何好的资源作为启动器

你们对我所测试的选项有什么看法,如果你能发布一些资源/例子的链接,那将会很棒

编辑:

我遇到了模拟对象(比如JMock ..),我想知道我可以用它作为DBUnit的替代品吗?

提前致谢

欢呼声

sameera

3 个答案:

答案 0 :(得分:1)

DBUnit的官方入门文章here为我工作。 Re:数据库逻辑测试,你可能还想检查this

至于JSP测试,我在成功之前使用Cactus来测试我的servlet。但是,我不知道它的JSP测试工具。

答案 1 :(得分:1)

从您的问题中不清楚您是否要针对数据库层运行集成测试(前端+后端)或单元测试。

如果您需要一个允许您编写集成测试的工具,您应该明确地查看Selenium。 使用Selenium,您可以通过简单地浏览网站(JSP页面)并声明页面上的内容存在或者等于某些值来生成功能测试。

Selenium带有Firefox plugin,基本上会为您生成代码。您可以在浏览器中重放测试或将它们导出为Java代码,并使它们成为测试套件的一部分。 Selenium是一个非常宝贵的工具。

使用像Selenium这样的工具的缺点是,在运行测试套件之前,需要在某处部署应用程序。如果您计划运行使用Selenium生成的自动化测试,这可能是一个限制。

如果您只对测试数据库访问代码(DAO,数据访问层)感兴趣,那么DBUnit是完美的工具。 通常,DBUnit用于在测试之前初始化数据库表,并且通常用于在数据库内容上运行断言。 DBUnit使用基于XML的格式来表示将插入数据库的数据。

包含预填充数据库的数据的XML文件通常由构建脚本(Ant,Maven等)或直接在单元测试代码中触发。 我使用了这两种方法,它实际上取决于代码的结构以及访问数据库的方式(Hibernate,Spring + Hibernate,JDBC ......)。

如果您的数据库不是太大,我建议您在运行测试套件之前填充它。或者,您可以在每次测试之前仅填充您感兴趣的表。

这是Unitils的链接,这是一个可以在DBUnit之上使用的附加库,以简化数据库测试策略。我认为它可以作为一个参考,让你开始: http://www.unitils.org/tutorial.html#Database_testing

以下是anoter链接(相当陈旧,2004年),展示了DBUnit的基本机制:

http://onjava.com/pub/a/onjava/2004/01/21/dbunit.html

答案 2 :(得分:1)

对于您的第一个问题,请查看this StackOverFlow thread ...

对于第二,我会考虑Chry的CactusSelenium的建议。

希望有所帮助。