【问题标题】:do PHPUnit tests need to be inside a "/test" directory?PHPUnit 测试是否需要在“/test”目录中?
【发布时间】:2011-11-22 08:49:10
【问题描述】:

当使用 PHPUnit 时,测试是否需要在 /tests 目录中? PHPUnit 如何知道一个测试是一个“测试”?它是解析文件并查找方法名称,还是使用某种文件命名约定?

【问题讨论】:

    标签: php unit-testing tdd phpunit


    【解决方案1】:

    测试需要在 /tests 目录中吗?

    没有。

    PHPUnit 如何知道测试是“测试”?

    通过反射(并由用户指定要查看的目录)。

    【讨论】:

    • 当然,文档告诉你如何启动 testrunner 并解释它的参数,它指定了如何编写测试:phpunit.de/manual/3.6/en/index.html - PHPUnit 本身的源代码中提供了其他信息:@987654322 @
    【解决方案2】:

    它是解析文件并查找方法名称,还是使用某种文件命名约定?

    简而言之:

    文件名需要以Test.php 结尾,类需要从PHPUnit_Framework_TestCase 扩展(继承树的某个点)。

    不过,最好将测试代码与生产代码分开。通常它反映文件夹结构。但是没有什么能阻止你做不同的事情。只需考虑为您的生产代码生成统计信息(指标)更容易。

    也许您希望为您的生产代码和其他测试代码自动检查编码规则。

    您希望为您的代码生成代码覆盖率,并让它包含所有生产代码,但不包含所有测试。 (PHPUnit 无论如何都不会在覆盖范围内显示您的测试类,而是显示基类和辅助类)

    【讨论】:

      【解决方案3】:

      约定是通过将​​Test 附加到您正在测试的类的名称来命名测试类和文件。例如,My/Cool/User.php 中的 My_Cool_User 将使用 My/Cool/UserTest.php 中的 My_Cool_UserTest 进行测试。

      我更喜欢将测试分开放在自己的目录中,但这不是必需的。通过使用命名约定,您可以告诉 PHPUnit 如何找到与常规代码混合的所有测试。默认情况下,PHPUnit 遵循上述内容,因此如果将其指向名为 myproject 的文件夹,它将在其中查找所有以 Test.php 结尾的文件。

      【讨论】:

        【解决方案4】:

        进入您的设置和目录,选择并验证您的测试和源位置是否已添加。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-07-24
          • 2010-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-12
          • 2011-05-10
          相关资源
          最近更新 更多