2010-01-01 158 views
5

這可能是一個愚蠢的問題,但我似乎無法讓它工作。用PHPUnit測試多個類

我正在使用PHPUnit進行測試。目前我在一個名爲Tests.php的文件中有兩個類:

class XTest extends PHPUnit_Framework_TestCase {...} 
class YTest extends PHPUnit_Framework_TestCase {...} 

但是,我無法運行這兩個類。我在Windows上運行以下命令:

php "C:\Program Files (x86)\PHP\phpunit" Tests 

它試圖運行名爲「測試」的測試類。相反,我希望它運行「XTest」和「YTest」以及文件中的所有內容。我怎麼能輕鬆地運行多個測試類?

回答

3

The PHPUnit Docs解釋命令行測試運行器期望的參數。

就你而言,你提供了Tests,這意味着PHPUnit在文件Tests.php中查找類Tests

有了這些知識,很容易發現組織測試的最佳方法是爲每個文件編寫一個測試類,文件名等於TestClassName.php

但是,如果由於某種原因你不想這樣做,你可以提供一個額外的參數告訴測試運行哪個文件測試類中聲明:

php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php 
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php 
+1

但是有沒有簡單的方法來運行多個測試?我不想運行200個不同的命令來測試200個類...... – Tower 2010-01-01 14:55:44

+5

當然,如果你給測試運行器一個目錄作爲參數,它將遍歷目錄遞歸運行它找到的所有測試。 – 2010-01-01 14:57:34

+0

在一個文件中測試兩個類的另一個選項:1)將Tests.php重命名爲Test.php 2)將它放到一個單獨的目錄中,讓我們說'tests'3)運行:phpunit測試 – Andy 2014-11-20 17:42:32

5

把所有的在相同的目錄下進行測試並要求PHPUnit遞歸遍歷它們是可行的,但是如果你在不同的目錄下進行測試或者只想運行特定測試類的特定部分,那麼@group annotation可能就是你想要的。

當您執行測試時,您可以使用php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong>,PHPUnit將僅執行那些在其PHPDoc中具有@group insert_name_of_group_to_which_xtests_and_ytests_belong的測試。