phpunit 單元測試

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.