java - 单元测试中,测试的数据应该如何准备?
ringa_lee
ringa_lee 2017-04-17 17:59:18
[Java讨论组]

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

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

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

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

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

ringa_lee
ringa_lee

ringa_lee

全部回复(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)
PHPz

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

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

}

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号