2010-08-06 21 views
7

我有多個「應用程序的一個PHP的MVC框架,在此制度下的組織去PHPUnit:多引導程序或XML文件?

\project\apps\app1\ 
\project\apps\app2\ 
\project\apps\shared\ 

每個應用程序都可以有它自己的一套控制器

\project\apps\app1\controllers\FooContoller.php 
\project\apps\app2\controllers\FooContoller.php 
\project\apps\shared\controllers\BarContoller.php 

我想設置我的PHPUnit測試空間能夠測試每個應用程序目錄,但我希望能夠以「最佳」方式進行測試。

的PHPUnit的設置是這樣的:

\project\PHPUnit 
\project\PHPUnit\phpunit.xml 
\project\PHPUnit\apps\app1\bootstrap.php 
\project\PHPUnit\apps\app1\controllers 
\project\PHPUnit\apps\app1\controllers\FooControllerTest.php 
\project\PHPUnit\apps\app2\bootstrap.php 
\project\PHPUnit\apps\app2\controllers 
\project\PHPUnit\apps\app2\controllers\FooControllerTest.php 

現在,這裏的問題:什麼是「最佳實踐」的方式來配置我phpunit.xml文件?現在,我試圖將這兩個應用程序作爲自己的測試套件包含在XML文件中,但我很快遇到了「無法重新聲明類:FooController」。

在我看來,理想的情況是配置的XML,這樣所有的測試跑了APP1然後記憶被「清除」和所有的測試均運行APP 2

然而,從最佳實踐來看,最好是有多個XML文件,每個APP都有一個文件。 (那麼也許一個批處理/ shell腳本文件來運行「測試所有」或測試X)

如果我們看一個「典型」 PHPUnit的XML配置文件:

<phpunit bootstrap="./apps/app1/bootstrap.php" colors="true"> 
    <testsuite name="App1TestSuite"> 
     <directory>./</directory> 
    </testsuite> 
    <filter> 
     <whitelist> 
     <directory suffix=".php">./apps/app1/controllers/</directory>   
    <directory suffix=".php">./apps/shared/</directory> 
     </whitelist> 
    </filter> 
    <logging> 
     <log type="coverage-html" target="./log/report.html" charset="UTF-8" 
      yui="true" highlight="true" 
      lowUpperBound="50" highLowerBound="80"/> 
     <log type="testdox-html" target="./log/testdox.html" /> 
    </logging> 
</phpunit> 

我應該去與其中的許多?或者,我應該添加標記,並將所有文件設置合併爲一個XML配置。

如果最佳實踐是'單一配置'...有誰知道你如何去啓用多個'bootstraps'?由於每個APP加載的全局變量略有不同,有些會加載同名命名類的稍微不同的版本,因此需要清除所有內容並重新開始。

我有興趣從一開始就構建「最佳」測試系統,但顯然在我的知識中有一些漏洞。

回答

5

你基本上幾乎回答你自己的問題。

但是,由於它可能會,是在最佳實踐方面 這是最好的 有多個XML文件,每個 APP的情況。 (那麼也許一個批處理/ shell腳本 文件運行「測試所有」或測試X

這是要走的路,把一切都從長遠看分離,更簡單,更頭疼的問題。

而且,你可能想看看一些持續集成解決方案來幫助運行你的測試套件,Hudson相當不錯,並且與PHPUnit很好地集成在一起。

+0

不幸的是:SI認爲phpunit組很少發展,這個問題很容易解決。 。 – inf3rno 2013-04-18 01:03:30