JUnit测试用例 - 设置数据

时间:2009-04-15 20:45:06

标签: java unit-testing junit

我有一个简单的CRUD操作,需要进行单元测试。 这些测试用例适用于DAO层 - 因此所有测试都针对数据库,因此无法进行模拟。

所以我有一个测试用例,用于创建另一个用于更新,另一个用于读取。

  1. 我应该对JUnit类中的数据进行硬编码还是将其外部化?

  2. Read TestCase显然需要数据库中的数据。我应该依赖Create Test案例来设置数据还是使用SQL语句?

  3. 这方面的最佳做法是什么?

    如果你能指出我讨论这个问题的互联网资源,那就太好了。

2 个答案:

答案 0 :(得分:5)

Spring has excellent support for this sort of thing - 要对“测试”数据库进行操作的单元测试,可以编写脚本以在每个单独的单元测试中重新创建。

最后一句的后半部分是开发可重用和可扩展单元测试的关键 - 对数据库的单元测试不应该被迫依赖于乐观地处于特定状态的数据,或者依赖于先前的单元测试首先运行 - 您需要为每个单元测试重新创建数据库,以便每个测试用例获得数据的“干净”版本。

关于设置Spring MVC的分步教程实际上是has a section on setting up unit tests for database classes,我认为即使您不使用Spring MVC也是一个有价值的参考 - 您可以使用它作为如何设置的参考从构建脚本创建/初始化测试数据库,使用Spring容器在每次测试运行时重新加载数据等。

答案 1 :(得分:2)

我建议使用DBUnit。允许您使用文件将数据库设置为已知状态,并与预期结果功能进行了很好的比较。入门指南是here

这也是很好的做法,不作为测试用例的一部分执行任何提交,然后你可以在tearDown()上回滚。