我知道PHPUnit中有一個選項爲stop-on-failure
,但我不希望它在任何測試失敗時停止,只是在此特定測試失敗時。如何在特定測試失敗時停止運行測試?
例如,在我的setUp
我連接到一個數據庫,並在第一次測試中,我檢查它是否連接到正確的數據庫。如果失敗了,我不能運行其餘的測試。
我知道PHPUnit中有一個選項爲stop-on-failure
,但我不希望它在任何測試失敗時停止,只是在此特定測試失敗時。如何在特定測試失敗時停止運行測試?
例如,在我的setUp
我連接到一個數據庫,並在第一次測試中,我檢查它是否連接到正確的數據庫。如果失敗了,我不能運行其餘的測試。
使用PHP的@depends
功能。
如果測試依賴於另一個測試,則只有在其他測試成功時纔會執行該測試。否則,它將被跳過。這可以讓您更好地查明問題。
用法:在測試函數頂部添加一個PHPDOC塊,該塊只在其他測試成功時執行,並添加一行@depends testConnectToDb
。
有關更多詳細信息,請參見http://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.depends和http://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies。
這很好,但是我需要將其中一個添加到除第一個之外的每種方法?這是唯一的方法嗎? – mpen
您也可以使用PHPUnit中的'assertPreCondition'(和'assertPostCondition')函數在測試函數之前(或之後)運行斷言。如果連接失敗,您也可以將測試標記爲在'setUp'中跳過,所以您不需要使用測試來檢查測試(我建議爲每個跳過的情況添加解釋測試以明確爲什麼跳過測試)。 – Sven