【发布时间】:2011-11-22 08:49:10
【问题描述】:
当使用 PHPUnit 时,测试是否需要在 /tests 目录中? PHPUnit 如何知道一个测试是一个“测试”?它是解析文件并查找方法名称,还是使用某种文件命名约定?
【问题讨论】:
标签: php unit-testing tdd phpunit
当使用 PHPUnit 时,测试是否需要在 /tests 目录中? PHPUnit 如何知道一个测试是一个“测试”?它是解析文件并查找方法名称,还是使用某种文件命名约定?
【问题讨论】:
标签: php unit-testing tdd phpunit
测试需要在 /tests 目录中吗?
没有。
PHPUnit 如何知道测试是“测试”?
通过反射(并由用户指定要查看的目录)。
【讨论】:
它是解析文件并查找方法名称,还是使用某种文件命名约定?
phpunit myTestStuff.php
PHPUnit_Framework_Test 简而言之:
文件名需要以Test.php 结尾,类需要从PHPUnit_Framework_TestCase 扩展(继承树的某个点)。
不过,最好将测试代码与生产代码分开。通常它反映文件夹结构。但是没有什么能阻止你做不同的事情。只需考虑为您的生产代码生成统计信息(指标)更容易。
也许您希望为您的生产代码和其他测试代码自动检查编码规则。
您希望为您的代码生成代码覆盖率,并让它包含所有生产代码,但不包含所有测试。 (PHPUnit 无论如何都不会在覆盖范围内显示您的测试类,而是显示基类和辅助类)
【讨论】:
约定是通过将Test 附加到您正在测试的类的名称来命名测试类和文件。例如,My/Cool/User.php 中的 My_Cool_User 将使用 My/Cool/UserTest.php 中的 My_Cool_UserTest 进行测试。
我更喜欢将测试分开放在自己的目录中,但这不是必需的。通过使用命名约定,您可以告诉 PHPUnit 如何找到与常规代码混合的所有测试。默认情况下,PHPUnit 遵循上述内容,因此如果将其指向名为 myproject 的文件夹,它将在其中查找所有以 Test.php 结尾的文件。
【讨论】:
进入您的设置和目录,选择并验证您的测试和源位置是否已添加。
【讨论】: