2013-10-30 200 views
0

我知道PHPUnit中有一個選項爲stop-on-failure,但我不希望它在任何測試失敗時停止,只是在此特定測試失敗時。如何在特定測試失敗時停止運行測試?

例如,在我的setUp我連接到一個數據庫,並在第一次測試中,我檢查它是否連接到正確的數據庫。如果失敗了,我不能運行其餘的測試。

回答

1

使用PHP的@depends功能。

如果測試依賴於另一個測試,則只有在其他測試成功時纔會執行該測試。否則,它將被跳過。這可以讓您更好地查明問題。

用法:在測試函數頂部添加一個PHPDOC塊,該塊只在其他測試成功時執行,並添加一行@depends testConnectToDb

有關更多詳細信息,請參見http://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.dependshttp://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies

+0

這很好,但是我需要將其中一個添加到除第一個之外的每種方法?這是唯一的方法嗎? – mpen

+0

您也可以使用PHPUnit中的'assertPreCondition'(和'assertPostCondition')函數在測試函數之前(或之後)運行斷言。如果連接失敗,您也可以將測試標記爲在'setUp'中跳過,所以您不需要使用測試來檢查測試(我建議爲每個跳過的情況添加解釋測試以明確爲什麼跳過測試)。 – Sven

相關問題