5

PHPUnit と Selenium 2 を使用して、Web アプリでいくつかの統合テストを行っています。テストが失敗するたびにスクリーンショットを保存したいと思います。これが私がこれまでに持っているものです:

<?php
include 'c:/wamp/www/testarea/selenium/phpunit-selenium/vendor/autoload.php';

class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{       
    protected function setUp()
    {
        $this->setBrowser('firefox');
        $this->setBrowserUrl('http://www.google.com/');
    }

    public function testTitle()
    {
        $this->url('http://www.google.com/');
        file_put_contents("c:/wamp/www/testarea/selenium/phpunit-selenium/screenshots/screenshot1.png",$this->currentScreenshot());
        $this->assertEquals('NOT GOOGLE', $this->title());
    }

}

これは正常に機能し、テストの実行時にスクリーンショットを保存します - ただし、テストが失敗した後にのみスクリーンショットを保存できるようにしたいと考えており、これはすべてのテストで発生するはずです。テストが失敗するたびに関数を自動的に実行するように PHPUnit に指示する方法はありますか?

ありがとう

4

3 に答える 3

9

メソッドを使用してみるtearDown()か、onNotSuccessfulTest()

http://phpunit.de/manual/current/en/fixtures.html

于 2013-10-03T12:23:30.287 に答える
5

Ricardo Simas の回答に加えて、 onNotSuccessfulTest メソッドを実装する場合は、必ず親を呼び出すようにしてください。そうしないと、デフォルトのエラー処理動作が停止します。

明らかにエラー状態 (要素が見つからない) があるのに、なぜテストに合格したのか疑問に思いました。

たとえば、これをすべてのテストケースの祖先クラスに入れました。

public function onNotSuccessfulTest($e){
    file_put_contents(__DIR__.'/../../out/screenshots/screenshot1.png', $this->currentScreenshot());

    parent::onNotSuccessfulTest($e);
}
于 2014-09-19T06:23:58.423 に答える