首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成测试最佳实践

集成测试最佳实践
EN

Stack Overflow用户
提问于 2017-02-14 10:33:03
回答 2查看 586关注 0票数 0

我当时在做一个项目,遇到了以下问题

我在类中创建了一个方法来查找一些user并应用逻辑,如果返回一些意外的东西,它会抛出一个异常,否则将返回id为null或具有某个值的user对象

我为所有的测试用例编写了单元测试,现在在callee中,我忘记了为null id添加条件。

处理这类错误的最佳实践是什么?我应该用所有的测试用例来编写集成测试,还是集成测试应该只有愉快的路径?

其次,在集成测试中,使用嵌入式数据库而不是实际的数据库好吗?我在考虑使用嵌入式数据库进行集成测试,但是如何测试特定于供应商的查询,例如oracle中的rownum和mysql中的limit。在我的实际环境中,我们使用oracle和嵌入式数据库,我可以使用h2。我使用的是纯jdbc

谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-02-14 11:08:44

对于特定于供应商的情况,我会这样做--因为Oracle中的rownum和MySQL中的limit都限制了返回的行数,所以我会在自己这一侧创建一个抽象,比如myLimit。根据供应商DB的选择,它映射到rownumlimit

一旦你有了上述内容,以及涵盖应用所有方面的任何其他必要的抽象,你就可以开始设计集成测试了。我推荐的首选是:(i)实际DB连接,(ii)嵌入式DB,和(iii)模拟DB,适用于所有供应商。数据库本身并不是很庞大。

基于QA指标,如果您觉得DB连接已经通过其他测试进行了彻底的测试,那么我会在集成测试中使用嵌入式或模拟DB。

正如您所看到的,答案取决于系统其余部分的测试情况!祝好运。

票数 0
EN

Stack Overflow用户

发布于 2017-02-14 17:00:18

关于单元和集成测试的

让我们来弄清楚这些类型的测试之间的区别。

单元测试应该覆盖单元,这意味着我们覆盖了一小段代码。因此,单元测试通常涵盖非常特定的情况,并且通常有很多单元测试,因为对于一个小方法,程序可能有几个方向,并且所有方向都应该涵盖。所有干扰单元测试的东西,例如,一些调用外部方并且与方法的业务逻辑不相关的方法,都必须被模拟。

相反,在集成测试中,不建议模拟任何东西,因为您希望从根本上测试整个管道,这意味着您的测试应该通过不同的模块(类),而不模拟任何东西。这种类型的测试通常是相当大的,因此,我建议而不是在集成测试中处理一些小的验证检查,因为从我的角度来看,这样做是不值得的。

如果我从我的角度正确理解了您的情况,那么您的方法应该检查null,而不是调用者。它基于这样一个事实,即您永远不知道谁将调用您的方法。您的方法应该预期输入参数中允许的所有不同值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42216888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档