2012-05-08 62 views
2

PHPUnit的手冊說:PHPUnit --loader:什麼是測試套件加載器?

如果你點了PHPUnit命令行測試運行到一個目錄它會尋找* test.php的文件。

見:http://www.phpunit.de/manual/3.6/en/organizing-tests.html#organizing-tests.filesystem

這是不對的!

當我打電話:

phpunit --config myconfig.xml --bootstrap mybootstrap.php tests 

這需要所有 PHP文件。

  1. 第一個想法是在config xml中使用黑名單或白名單,但後來我意識到,這些列表是過濾器,用於測試中的主題並過濾測試類。
  2. 第二個想法是在config xml中使用testsuites。但目前測試套件只能被定義,而不能通過命令行來執行(而不是通過PHPUnit實現的jet,門票開放超過1年)。
  3. 接下來的想法是使用測試套件加載程序,但我找不到關於如何使用它們以及如果tsl是我認爲它的文檔。

當我運行:

phpunit --config myconfig.xml --bootstrap mybootstrap.php --loader My_Testsuite_Loader tests 

PHPUnit的發生在所有的PHP文件 「測試/」 並執行它們。 「My/Testsuite/Loader.php」文件將包含在內。 PHPUnit檢查My_Testsuite_Loader類是否存在。迄今爲止都很好。

我使用「PHPUnit/Runner/StandardTestSuiteLoader.php」作爲「My/Testsuite/Loader.php」的模板。它包含「load()」和「reload()」方法。這兩種方法都不會被PHPUnit框架調用。爲什麼不?我認爲有一個自己的testsuiteloder會給我一個機會來實現一個測試套件排除模式。我的項目

示例文件系統:

<root> 
|-src/MyProject/Package/Object.php 
|-tests/MyProject/Package/Object/TestTemplate.php 
|-tests/MyProject/Package/Object/GetFooTest.php 
|-tests/MyProject/Package/Object/GetBarTest.php 
|-tests/phpunit.xml 
|-tests/bootstrap.php 
|-tests/My/Testsuite/Loader.php 

正如你可以看到我使用一個文件的所有測試有關SUT(測試方法)。所有這些* Test.php文件都從TestTemplate(TestCase)繼承。在TestTemplate.php中是一個初始化對象(Object.php)並將其存儲在私有成員var中的設置。

如何使用測試套件加載程序/它是什麼意思? (如何排除測試類,不適合的格局:「* test.php的」)

+1

首先,沒有'--config'這樣的標誌,它可以是'-c'或'--configuration'。其次,如果您已經提供配置文件,則不必提供引導程序文件和測試套件加載程序,都可以在那裏設置。第三,你甚至不需要提供一個配置文件,只要它叫做'phpunit.xml'或'phpunit.xml.dist'並且你可以從右邊的目錄調用'phpunit'腳本。第四,文件對你認爲錯誤的內容是正確的。最後,我認爲這個問題可能在你的配置文件中。你能展示那裏有什麼嗎? – zafarkhaja

+0

@zafarkhaja:你說得對--config。您可以使用命令行開關覆蓋xml設置,如果您嘗試將phpunit集成到IDE(不同的運行配置,但是共享的xml),這可能是有意義的。 – DanielaWaranie

+0

@DanielaWaranie,的確如此。在這些情況下,這是有道理的。謝謝。 – zafarkhaja

回答

-1

你需要拿出「測試」的說法,像這樣

phpunit --config myconfig.xml --bootstrap mybootstrap.php 

然後在你的myconfig .xml

<testsuites> 
    <testsuite name="AllTests"> 
     <directory>.</directory> 
    </testsuite> 
<testsuites> 

<filter> 
    <blacklist> 
    <directory suffix=".xml">.</directory> 
    <file>MyProject/Package/Object/TestTemplate.php</file> 
    </blacklist> 
</filter>