12

phpunitでSeleniumTestCaseを実行しようとしていますが、phpunit.batスクリプトで実行できません。

私の目標は、CruiseControlとphpUnderControlでSeleniumRCでphpunitを使用することです。テストは次のようになります。

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

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

    public function testTitle()
    {
        $this->open('http://www.example.com/');
        $this->assertTitleEquals('Example Web Page');
    }
}

また、Selenium拡張機能とともにインストールされたinclude_pathとPHPUnitにPEARを取得しました。私はこれらを梨インストーラーでインストールしたので、それは問題ではないと思います。

どんな助けでも大歓迎です。

ありがとう、レミー

4

10 に答える 10

16

うまくいけば、これはここで与えられたものよりも決定的な答えです(私の問題は解決しませんでした)。このエラーが発生した場合は、PEAR フォルダーをチェックして、「SeleniumTestCase.php」ファイルが実際にそこにあるかどうかを確認してください。

/PEAR/PHPUnit/Extensions/SeleniumTestCase.php

そうでない場合、最も簡単な方法は、PEAR を使用して PHPUnit をアンインストールし、再インストールすることです ...

pear uninstall phpunit/PHPUnit

pear uninstall phpunit/PHPUnit_Selenium

pear install phpunit/PHPUnit

上記を実行して単一のインストールを実行した後、PHPUnit_Selenium も自動インストールされました。これが典型的かどうかはわかりません。

pear install phpunit/PHPUnit_Selenium

必要に応じて、PEAR チャネル情報についてはhttp://www.phpunit.de/manual/3.5/en/installation.htmlも参照してください...

于 2010-12-15T23:39:45.737 に答える
6

契約は次のとおりです。

「クラス PHPUnit_Extensions_SeleniumTestCase が (テストケース ファイル名) に見つかりませんでした」という問題がある場合は、次の 2 つのことを行う必要があります。

1. テスト ケースのファイルの名前を、含まれているクラスの名前に変更します 。 2. テストを含むフォルダーから phpunit を起動する必要があります。

これで問題が解決するはずです。

アンドリュー

于 2009-01-23T11:04:18.543 に答える
1

PHPマニュアルのrequire_onceエントリのコメントの1つを見てください..

http://ie.php.net/manual/en/function.require-once.php#62838

"require_once (および include_once が重要) は遅い

さらに、単体テストとモック オブジェクトの使用を計画している場合 (つまり、テストするクラスに実際のオブジェクトが含まれる前にモック クラスを含める場合)、require() はクラスではなくファイルをロードするため、機能しません。"

于 2008-09-16T22:30:11.150 に答える
1

テストが含まれていたファイルの名前を「WebTest.php」(含まれているクラスの名前)に変更したところ、テストは正常に実行されるようになりました。

于 2008-09-16T22:43:06.687 に答える
1

試す:

class WebTest extends \PHPUnit_Extensions_Selenium2TestCase

私にとっては、名前空間の問題である可能性があります。

于 2014-10-01T15:53:52.323 に答える
1

私が書いたテストで同じエラーが表示されたときに、PHPUnitチュートリアルの次のサンプルが機能していることがわかりました。解決策は驚きでした。クラスがスクリプト内の<?php .. ?>ブロックではなく、ブロック内にあることを確認してください。<? .. ?>

<?php
require_once 'PHPUnit/Framework.php';

class StackTest extends PHPUnit_Framework_TestCase
{
    public function testPushAndPop()
    {
        $stack = array();
        $this->assertEquals(0, count($stack));

        array_push($stack, 'foo');
        $this->assertEquals('foo', $stack[count($stack)-1]);
        $this->assertEquals(1, count($stack));

        $this->assertEquals('foo', array_pop($stack));
        $this->assertEquals(0, count($stack));
    }
}
?>
于 2010-01-27T10:50:06.657 に答える
1

これが私がこの問題を解決した方法です:

  1. ubuntu など、php 用の curl 拡張機能がインストールされていることを確認してください。sudo apt-get install php5-curl
  2. 入るsudo pear install phpunit/PHPUnit_Selenium

その後、不足しているファイルをインストールする必要があります

幸せなコーディング...

于 2012-01-30T05:31:18.833 に答える
0

インラインコマンドを使用する場合:PhPunitディレクトリからテストを起動すると、テストディレクトリから起動するときにエラーが発生しますが、エラーはありません...

しかし、私はまだセレンサーバーにアクセスしていません...前に起動する必要がありますか。

はいの場合、PhPUnit へのハンドルを指定していないのは奇妙です...

于 2009-01-08T17:03:01.577 に答える
0

失敗した場合、常に最も詳細なエラー メッセージが出力されるとは限りません。

テストを実行する前に、Selenium も起動することを忘れないでください。

java -jar selenium-server-standalone-2.39.0.jar

これは、自分で機能していたコードの例です。http://www.siteconsortium.com/h/p1.php?id=php002 . 明らかに、テスト スイートを作成し、テスト ケースを起動するには、さまざまな方法がありますが、最初はクラスの問題を取り除くために set_class_path を使用しました。

于 2014-02-05T03:32:03.317 に答える