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文件。
- 第一個想法是在config xml中使用黑名單或白名單,但後來我意識到,這些列表是過濾器,用於測試中的主題並過濾測試類。
- 第二個想法是在config xml中使用testsuites。但目前測試套件只能被定義,而不能通過命令行來執行(而不是通過PHPUnit實現的jet,門票開放超過1年)。
- 接下來的想法是使用測試套件加載程序,但我找不到關於如何使用它們以及如果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的」)
首先,沒有'--config'這樣的標誌,它可以是'-c'或'--configuration'。其次,如果您已經提供配置文件,則不必提供引導程序文件和測試套件加載程序,都可以在那裏設置。第三,你甚至不需要提供一個配置文件,只要它叫做'phpunit.xml'或'phpunit.xml.dist'並且你可以從右邊的目錄調用'phpunit'腳本。第四,文件對你認爲錯誤的內容是正確的。最後,我認爲這個問題可能在你的配置文件中。你能展示那裏有什麼嗎? – zafarkhaja
@zafarkhaja:你說得對--config。您可以使用命令行開關覆蓋xml設置,如果您嘗試將phpunit集成到IDE(不同的運行配置,但是共享的xml),這可能是有意義的。 – DanielaWaranie
@DanielaWaranie,的確如此。在這些情況下,這是有道理的。謝謝。 – zafarkhaja