質問

がわかりやすく伝えるための試験内 TestCase バスの運行は、"物事には順序があるの?例えば、私は別のライフサイクルにおけるオブジェクトから創造への利用を破壊をもたれるようにする必要があり、オブジェクトが設定目の前を実行します。

役に立ちましたか?

解決

ん、ありがとうございますのでデザインの問題。

通常、それぞれの試験に頼っていてはその他の試験することが可能ですので、走ります。

それぞれの試験ニーズのインスタンスを生成すると破壊するもので、このアプローチ、アナフィラキシー様を共有オブジェや国の間で試験までを実施。

き具体的なぜ必要なのと同じオブジェクトNう。

他のヒント

アサ試験に対応して依存関係を @よ アノテーションを期待で

ここでは一例ですから、書類の場で試験が行われますと,わたしたちを満足する依存関係のため、各々の依存性試験合格の引数には次:

class 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);
    }
}

ただし、重要な試験の未解決の依存関係す ない 実行する(することが望ましく、どこに注目をいち早くなります。なので、この支払いする際には細心の注意を用い依存関係.

正しい答えは、この適切な設定ファイルのための試験までを実施。また、同じ問題を固定するtestsuiteを作に必要な試験のファイル:

phpunit.xml:

<phpunit
        colors="true"
        bootstrap="./tests/bootstrap.php"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        strict="true"
        stopOnError="false"
        stopOnFailure="false"
        stopOnIncomplete="false"
        stopOnSkipped="false"
        stopOnRisky="false"
>
    <testsuites>
        <testsuite name="Your tests">
            <file>file1</file> //this will be run before file2
            <file>file2</file> //this depends on file1
        </testsuite>
    </testsuites>
</phpunit>

また試験の共有の様々なヘルパーオブジェや設定を使用でき setUp(), tearDown() に追加する sharedFixture 物件です。

アサの使用を許可'@によりアノテーションを指定する依存のテストケースを通しの引数間の依存である.

私は、以下のシナリオかをテストする必要があり創造と破壊の特定の資源です。

当初、私は二つの方法。testCreateResource b.testDestroyResource

a.testCreateResource

<?php
$app->createResource('resource');
$this->assertTrue($app->hasResource('resource'));
?>

b.testDestroyResource

<?php
$app->destroyResource('resource');
$this->assertFalse($app->hasResource('resource'));
?>

思いのこもっていったということとしていtestDestroyResourceに依存すtestCreateResource.より良い練習がい

a.testCreateResource

<?php
$app->createResource('resource');
$this->assertTrue($app->hasResource('resource'));
$app->deleteResource('resource');
?>

b.testDestroyResource

<?php
$app->createResource('resource');
$app->destroyResource('resource');
$this->assertFalse($app->hasResource('resource'));
?>

ュニケーション:利用静的(!) 機能テストを再利用可能です。のためのインスタンスを使用していセレンIDEで記録実験やアサ-セレン(github)の走行試験中のブラウザ)

class LoginTest extends SeleniumClearTestCase
{
    public function testAdminLogin()
    {
        self::adminLogin($this);
    }

    public function testLogout()
    {
        self::adminLogin($this);
        self::logout($this);
    }

    public static function adminLogin($t)
    {
        self::login($t, 'john.smith@gmail.com', 'pAs$w0rd');
        $t->assertEquals('John Smith', $t->getText('css=span.hidden-xs'));
    }

    // @source LoginTest.se
    public static function login($t, $login, $pass)
    {
        $t->open('/');
        $t->click("xpath=(//a[contains(text(),'Log In')])[2]");
        $t->waitForPageToLoad('30000');
        $t->type('name=email', $login);
        $t->type('name=password', $pass);
        $t->click("//button[@type='submit']");
        $t->waitForPageToLoad('30000');
    }

    // @source LogoutTest.se
    public static function logout($t)
    {
        $t->click('css=span.hidden-xs');
        $t->click('link=Logout');
        $t->waitForPageToLoad('30000');
        $t->assertEquals('PANEL', $t->getText("xpath=(//a[contains(text(),'Panel')])[2]"));
    }
}

Ok、今はとても利用できる再利用可能な要素その他の試験:)たとえば、次のようになります。

class ChangeBlogTitleTest extends SeleniumClearTestCase
{
    public function testAddBlogTitle()
    {
      self::addBlogTitle($this,'I like my boobies');
      self::cleanAddBlogTitle();
    }

    public static function addBlogTitle($t,$title) {
      LoginTest::adminLogin($t);

      $t->click('link=ChangeTitle');
      ...
      $t->type('name=blog-title', $title);
      LoginTest::logout($t);
      LoginTest::login($t, 'paris@gmail.com','hilton');
      $t->screenshot(); // take some photos :)
      $t->assertEquals($title, $t->getText('...'));
    }

    public static function cleanAddBlogTitle() {
        $lastTitle = BlogTitlesHistory::orderBy('id')->first();
        $lastTitle->delete();
    }
  • このようにすることで作ることができる階層す。
  • でき鋼い物件とそれぞれの試験の場合は理由には別途その他の場合はクリーンDBた。
  • 最も重要ですが、たとえば、ログイン変更、ごみを変更すLoginTestクとド必要な正しいログインにその他の試験する必要があると思いますアップデート後LoginTest):)

時走行試験をクリプトの清掃dbの広告に始.以上か? SeleniumClearTestCase (この画面()とその他素敵な機能があり)で延長 MigrationToSelenium2 (githubから、ポートを記録し試験にfirefoxを利用seleniumIDE+ffプラグイン"セレンジPHP Formatters"が自分のクラスLaravelTestCaseでのコピーを照射\少ない試験\テストケースクラスが広PHPUnit_Framework_TestCase)を設定laravelへのアクセスの雄弁ないたい場合はクリーンDB末試験)の延長PHPUnit_Extensions_Selenium2Testcase.設laravel雄弁ないもSeleniumClearTestCase機能createApplicationとも呼ばれるので setUp, 私はこの機能からlaral試験-テストケースクラス)

古いものに問題試験する必要がある場合には実行は、"物事には順序がある.それぞれの試験は完全に独立した、その他のものですの欠陥位で取得可能(そのためdebuggable)。

精算 このサイト 全体の負荷のアイデア/情報につ因子の検査方法お避けるこれらの種類の課題です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top