1、ubuntu 12.04 安裝
wget https://phar.phpunit.de/phpunit.pharchmod +x phpunit.pharmv phpunit.phar /usr/local/bin/phpunit
2、測試案例phpunit1.php測試的依賴關係)
展示如何用@depends標註來表達測試方法之間的依賴關係
<?phpclass StackTest extends PHPUnit_Framework_TestCase{ public function testEmpty() { $stack = array(); $this->assertEmpty($stack); return $stack; } /** * @depends testEmpty */ public function testPush(array $stack) { array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertNotEmpty($stack); return $stack; } /** * @depends testPush */ public function testPop(array $stack) { $this->assertEquals('foo', array_pop($stack)); $this->assertEmpty($stack); }}
3、測試結果
phpunit phpunit1.phpPHPUnit 3.7.27 by Sebastian Bergmann....Time: 4 ms, Memory: 4.25MbOK (3 tests, 5 assertions)
4、為了快速定位缺陷,我們希望把注意力集中於相關的失敗測試上。這就是為什麼當某個測試所依賴的測試失敗時,PHPUnit 會跳過這個測試。通過利用測試之間的依賴關係,缺陷定位得到了改進。
如下案例phpunit2.php:
<?phpclass DependencyFailureTest extends PHPUnit_Framework_TestCase{ public function testOne() { $this->assertTrue(FALSE); } /** * @depends testOne */ public function testTwo() { }}?>
5、執行結果
phpunit phpunit2.phpPHPUnit 3.7.27 by Sebastian Bergmann.FSTime: 2 ms, Memory: 4.00MbThere was 1 failure:1) DependencyFailureTest::testOneFailed asserting that false is true./home/wwwroot/local.guazi.com/webroot/phpunit2.php:6FAILURES!Tests: 1, Assertions: 1, Failures: 1, Skipped: 1.
6、測試可以使用多於一個@depends標註。PHPUnit 不會更改測試的運行順序,因此你需要自行保證某個測試所依賴的所有測試均出現於這個測試之前。
擁有多個@depends標註的測試,其第一個參數是第一個生產者提供的基境,第二個參數是第二個生產者提供的基境,以此類推
案例phpunit3.php
<?phpclass MultipleDependenciesTest extends PHPUnit_Framework_TestCase{ public function testProducerFirst() { $this->assertTrue(true); return 'first'; } public function testProducerSecond() { $this->assertTrue(true); return 'second'; } /** * @depends testProducerFirst * @depends testProducerSecond */ public function testConsumer() { $this->assertEquals( array('first', 'second'), func_get_args() ); }}?>
7、執行結果
phpunit phpunit3.phpPHPUnit 3.7.27 by Sebastian Bergmann....Time: 4 ms, Memory: 4.25MbOK (3 tests, 3 assertions)
本文出自 “phper” 部落格,請務必保留此出處http://janephp.blog.51cto.com/4439680/1298842