簡體   English   中英

使用PHPUnit進行單元和功能測試的文件系統/目錄布局

[英]Filesystem/directory layout for unit and functional tests with PHPUnit

我需要將集成測試添加到我的測試套件中。 盡管名稱為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迷惑。

添加<root>/tests/lib/Foo/ComponentIntegrationTest.php

與上述問題相同,目錄更少。

使用@group integration類的符號將測試添加到現有測試類中

這樣可以保持1:1的關系,但是會大大增加測試套件的復雜性。 另外,由於需要在不斷變化的環境中調用SUT,因此我不能只重用單元測試中的_setup()。

有想法嗎?

單元測試用於隔離測試單個單元(類)。 集成測試旨在一起測試多個單元。 這樣,您可能在類和它們所屬的集成測試之間沒有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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM