これに対する修正は、データ ファイルがどのように見えるかによって異なります。投稿していただければ、さらにお役に立てます。
当分の間、phpunit は本質的に一度に 1 つのユニット テスト フレームワークであるため、複数のブラウザーを同時に実行しようとしているのではなく、必要に応じてブラウザーを変更するオプションを予約したいだけだと思います。 .
setUp で setBrowser を使用する必要があるのは正しいです。実行されると、PHPUnit は常に setUp を最初に実行し、tearDown() を最後に実行します。ここでの良い方法は、これらのメソッドをカスタマイズできる独自のカスタム ユニット テスト ケース クラスを作成することです。
class customUnitTest extends PHPUnit_Extensions_Selenium2TestCase {
public $browser = "firefox";
public function setUp() {
$this->setBrowser("*".$browser);
}
}
テストを書いているときは、個人のテスト クラスを拡張し、それに応じてブラウザを設定します。
class newTest extends customUnitTest {
$this->browser = "safari";
public function testBlah {
blah blah...
}
}
setUp は実行時に実行され、ブラウザ変数を取り込みます。デフォルトでは firefox を取得しますが、一部のテストが他のブラウザーでより適切にテストされている場合は、そのオプションがあります。
すべてのテストですべてのブラウザを同時に変更できるようにしたい場合は、環境変数に基づいてブラウザの値を割り当てることを検討する必要があります。
class customUnitTest extends PHPUnit_Extensions_Selenium2TestCase {
try {
public $browser = getenv("SELENIUM_BROWSER");
} catch (Exception $e) {
public $browser = "firefox";
}
public function setUp() {
$this->setBrowser("*".$browser);
}
}
このセットアップでは、環境変数 SELENIUM_BROWSER を変更することで、ブラウザーをハードコーディングしていないすべてのテストのブラウザーを変更できます。このようにして、何も書き直すことなく、異なる既定のブラウザーを使用して異なるサーバーで同じコードを実行できます。
多重継承は適切な方法ではないことに注意してください。メソッド/変数のスコープを正しく設定しないと、脆弱なコードやセキュリティ上の脅威につながる可能性があります。ただし、この場合、PHPUnit フレームワーク メソッドを好きなように定義でき、テスト内ですべての基本的な Selenium メソッドを取得できるので便利です。したがって、デフォルトのセレンメソッドを実行するには、次のように記述します
$this->open("www.google.com");
これは、作成するテストがセレン オブジェクトであるため、セレンをオブジェクトに割り当てる一般的なアプローチとは大きく異なる方法ですが、特にこのユース ケースでは、php の方が適しているようです。