单元测试中,测试的数据应该如何准备?

1、如何准备测试所需要的数据?
2、测试的数据应该放在哪里?
3、正式环境迭代是否需要再次测试?

我用的是Spring,现在的测试是这样进行的,个人感觉十分不灵活,想咨询一下大家都是怎么测试的?

1、在test/resources目录下有两个文件before.sql,after.sql。怎么用的呢,测试之前执行before.sql生成测试所需要的数据,测试完了执行after.sql删除为了测试产生的数据。
2、有了基础数据之后,针对不同种类的数据就可以做各种异常判断的测试啦。

上面是我现在的测试方式,问题很多。首要的就是十分不灵活,一旦数据表有所改动,测试数据就得跟着改。再者,需要清理干净测试的数据其实挺麻烦的。

不知道大家是怎么进行测试的,有没有更简单方便的方法?

阅读 10.1k
3 个回答

可使用HSQLDB或者H2来进行单元测试,每次启动单元测试,HSQLDB或H2所生成的数据库都是初始化的,不必再让你before、after。


如果是集成在spring中

<jdbc:initialize-database data-source="dataSource">
        <jdbc:script location="createTable.sql"/> <!--创建表脚本-->
        <jdbc:script location="insertData.sql"/>  <!--插入数据脚本-->
</jdbc:initialize-database>

用spring的话,可以直接用@TransactionConfiguration注解来配置测试数据是否要回滚,这样就不用你自己去删除测试数据了。比如

@TransactionConfiguration(transactionManager = "mybatisTransactionManager", defaultRollback = true)
新手上路,请多包涵

贴一个我现在正在用的测试超类吧

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
        "classpath:spring.xml"
})
@Transactional
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
public class AbstractDrugTest extends AbstractTransactionalJUnit4SpringContextTests{

}

子类里给每个需要的表写入数据,在一个用例结束以后,Spring 会帮助自动回滚数据的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏