【发布时间】:2015-05-31 16:39:18
【问题描述】:
问题
为了提高我的代码质量,我决定尝试学习如何使用单元测试而不是我平庸的最佳测试解决方案来测试我的代码。
我决定使用 Composer 安装 PHPUnit 作为个人库,让我可以实现常用的数据库功能。起初我没有 PHPUnit 的配置文件,当我运行如下命令时:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
请注意,这是一个终端命令,所以我没有包含 .php 扩展名。上面提到的GeneralStringFunctionsTest其实是一个GeneralStringFunctionsTest.php文件。
输出是我所期望的:
时间:31 毫秒,内存:2.75Mb
OK(1 个测试,1 个断言)
然后我尝试使用配置文件来自动加载测试套件,而不必每次都手动输入文件。我在根目录中创建了一个名为phpunit.xml 的文件,并在文件中输入以下内容:http://pastebin.com/0j0L4WBD:
<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
<testsuites>
<testsuite name="Tests">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
现在,当我运行命令时:
phpunit
我得到以下输出:
Sebastian Bergmann 及其贡献者的 PHPUnit 4.5.0。
从 /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml 读取配置
时间:16 毫秒,内存:1.50Mb
没有执行任何测试!
如果有帮助,我的目录结构如下:
src - 顶级目录(包含我所有的源代码)
tests - 顶级目录(包含我的所有测试,结构与我的 src 文件夹相同)
供应商 - Composer 第三方文件
我还有 composer json 和 lock 文件,以及顶层的 phpunit xml 文件作为文件。
我尝试过的事情
- 将
phpunit.xml中的目录更改为tests/GeneralStringFunctions - 将
phpunit.xml中的目录更改为./tests - 将
phpunit.xml文件移动到tests目录,然后将目录更改为./而不是tests。 - 在
phpunit.xml中的目录标记中添加后缀属性,以将“Tests”指定为显式后缀。
【问题讨论】:
-
tests/GeneralStringFunctions/GeneralStringFunctionsTest是文件夹还是文件名? -
@hek2mgl 是一个文件名,实际上叫
GeneralStringFunctionsTest.php。在命令行界面中,我没有输入.php扩展名,因为没有它也可以工作。 -
好的,那么您的配置应该可以工作了。顺便说一句,如果你指定一个后缀,它应该是
Test.php而不是Test在你的情况下,但是你可以忽略它,因为Test.php是默认值。 -
@hek2mgl 感谢您的提醒!您知道为什么我的测试没有使用配置文件
phpunit.xml运行吗? -
为什么不给我们看配置文件?
标签: php unit-testing phpunit