【问题标题】:Filesystem/directory layout for unit and functional tests with PHPUnit使用 PHPUnit 进行单元和功能测试的文件系统/目录布局
【发布时间】:2011-12-18 17:33:34
【问题描述】:

我需要在我的测试套件中添加集成测试。虽然名称是 PHPUnit,但我发现这里有很多对运行非单元测试的支持。我的布局是这样的:

<root>
    lib/
        Foo/
            Component.php
    tests/
        lib/
            Foo/
                ComponentTest.php
        resources/
            fixtures/

(在我看来)有三种方法可以在此处添加高于单元级别的测试:

添加并行结构

<root>
    tests/
        unit/
            lib/
                Foo/
                    ComponentTest.php
        integration/
            lib/
                Foo/
                    ComponentTest.php
        resources/
            fixtures/

这应该可行,但现在没有 1:1 类:测试类关系,这可能(并且可能)会混淆 Netbeans。

添加&lt;root&gt;/tests/lib/Foo/ComponentIntegrationTest.php

和上面有同样的问题,目录少了。

将测试添加到现有测试类中,使用 @group integration 之类的符号

这保持了 1:1 的关系,但显着增加了测试套件的复杂性。此外,由于需要在不断变化的环境中调用 SUT,我不能只重用单元测试中的 _setup()。

想法?

【问题讨论】:

    标签: php layout integration phpunit


    【解决方案1】:

    单元测试用于单独测试单个单元(类)。集成测试旨在一起测试多个单元。因此,您可能不会在类和它们所属的集成测试之间建立 1:1 的相关性。

    我会创建一个单独的目录结构——甚至可能是一个单独的项目——来容纳集成测试。 NetBeans 将无法打开一个类所属的“测试”,因为它将属于多个测试,但它继续打开其匹配的单元测试。

    我们有一个单独的项目用于使用 Selenium 进行集成测试(在我到达之前称为健全性测试),到目前为止它运行良好。

    更新

    我们的集成测试的目录布局非常简单:每个站点一个目录。我们有一个站点的代码库,并使用视图来允许单个站点覆盖布局(不仅仅是皮肤)。我们没有像我希望的那样在这些测试上花费太多时间。在将站点推送到登台服务器后,我们使用 Selenium 运行测试。我还没有机会将它们连接到我们的持续集成服务器 (Jenkins),但那将是理想的。

    我建议按您网站上的功能区域或模块来组织它们。大多数情况下,这取决于您对正在测试的项目的看法。一个示例可能如下所示:

    src/
        Model/
            Cart.php
        ...
    tests/
        unit/
            phpunit.xml
            bootstrap.php
            Model/
                CartTest.php
            ...
        integration/
            account/
                login/
                register/
                subscriptions/
            products/
                listing/
                details/
                search/
            cart/
                shop/
                checkout/
    

    【讨论】:

    • tests/unit 和 tests/integration 也将是我的最爱,@David 提出的所有论点都没有给我留下什么可补充的 :) 将您的 IDE 指向您的单元测试文件夹并运行集成测试手/直接来自测试。
    • 你说得很好,集成测试没有 1:1 的相关性,d'oh! :) 编辑:您能否概述仅包含集成测试的单独项目的目录布局?它是否只包含tests/ 目录?
    猜你喜欢
    • 2010-09-09
    • 2011-01-15
    • 2014-12-25
    • 2021-06-26
    • 1970-01-01
    • 2021-06-24
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多