最近一直在用SimpleTest测试代码,发现这个问题其实已经很久了,但一直因为无关痛痒没有去解决,今天终于憋足劲把它搞定了,把过程写出来给大家分享:) 复现问题 首先新建一个test.php,内容如下: 现在执行这个测试,你会发现test cases complete的数字不
最近一直在用SimpleTest测试代码,发现这个问题其实已经很久了,但一直因为无关痛痒没有去解决,今天终于憋足劲把它搞定了,把过程写出来给大家分享:)
复现问题
首先新建一个test.php,内容如下:
现在执行这个测试,你会发现test cases complete的数字不对劲。显示的TestCase总数多于真实的TestCase数量。如下图:
排查原因
Google无果后,只能自己排查SimpleTest源码了。先在项目里搜索”test cases complete”,定位到reporter.php:
分别追踪$this->getTestCaseProgress()和$this->getTestCaseCount(),前者的数量和实际使用的TestCase数量符合,所以判定问题出在后者。
后者返回的是SimpleScorer::$size,这个属性在新建SimpleScorer实例时被初始化为null,在TestSuite::run()时通过SimpleScorer::paintGroupStart()被赋值为TestSuite::getSize():
此时将$this->cases输出,可以看到不仅有自己编写的TestCase,还有基类WebTestCase。
究其原因,这些类是通过SimpleFileLoader::createSuiteFromClasses()从文件中解析出来的,但基类WebTestCase并不包含实际的测试代码,却被计入了TestCase总数。
在TestSuite::getSize()中有个判断,如果SimpleTest::isIgnored( $case )为true,则不增加$count。但是遗憾的是SimpleTest默认的IgnoreList居然是空的,不包含自己提供的WebTestCase、UnitTestCase等基类:
解决方案
找到原因之后,解决问题就很简单了。在代码中自己用SimpleTest::ignore()将WebTestCase添加到IgnoreList即可:
再执行测试,大功告成!
原文地址:解决SimpleTest 1/2 test cases complete的问题, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器