首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高单元测试的效率?

如何提高单元测试的效率?
EN

Stack Overflow用户
提问于 2013-01-30 10:23:56
回答 1查看 914关注 0票数 1

我们正在为现有的代码库创建单元测试用例,而在创建测试用例的过程中,测试文件的大小越来越大,执行时间非常长。

我知道单元测试的局限性,我也做了一些研究来提高效率。在研究的同时,我发现了一个有用的想法来加强提供的数据集。

我仍然在寻找更多关于如何提高运行/创建单元测试用例的效率的想法?我们可以将增加服务器资源的选项保留在此范围之外。

EN

回答 1

Stack Overflow用户

发布于 2013-01-31 10:05:08

由于你的问题是一般性的,我将讨论几个常见的选择。但是,大多数提速技术都有缺点。

如果您依赖于外部组件(web服务、文件系统等)你可以通过嘲笑他们来加快速度。无论如何,对于单元测试来说,这通常是可取的。您仍然需要进行与真实组件进行测试的集成/功能测试。

如果测试数据库,您可以通过使用内存中的数据库来获得相当快的速度(sqlite可以很好地使用PDO;java可能是H2?)。这可以有不利方面,除非数据库可移植性已经是一个设计目标。(我将转向对MySQL和sqlite运行一组单元测试。)完全模拟数据库(见上文)可能更好。

PHPUnit允许您在每个测试中指定@组。您可以通过使用@group slow标记较慢的测试,然后使用--exclude-group命令行标志在大多数测试运行中排除它们,并将它们包含在夜间构建中。(您还可以在您的指定要包括/排除的组文件中使用phpunit.xml.dist。(我认为jUnit没有这个选项,但TestNG有;对于C#,NUnit提供类别有这个选项。)

创建一次夹具,然后在测试之间共享它们,比在每次测试之前创建夹具要快。XUnit测试模式将整个章节用于讨论这种方法的优缺点(主要是缺点)。

我知道在您的问题中向它抛出硬件是明确禁止的,但请再次查看@group,并考虑它如何允许您将测试拆分到多台计算机上。或者按目录拆分测试,并在局域网上的每个多台计算机上处理一个目录。(PHPUnit是单线程的,所以您可以在同一台机器上运行多个实例,每个实例都执行自己的目录:要知道如何使固定装置独立(包括您创建的数据库的唯一名称,模拟文件系统等等)。如果你沿着这条路走。)

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

https://stackoverflow.com/questions/14601658

复制
相关文章

相似问题

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