我有一个简单的CRUD操作,需要进行单元测试。 这些测试用例适用于DAO层 - 因此所有测试都针对数据库,因此无法进行模拟。
所以我有一个测试用例,用于创建另一个用于更新,另一个用于读取。
我应该对JUnit类中的数据进行硬编码还是将其外部化?
Read TestCase显然需要数据库中的数据。我应该依赖Create Test案例来设置数据还是使用SQL语句?
这方面的最佳做法是什么?
如果你能指出我讨论这个问题的互联网资源,那就太好了。
答案 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)