タグ付けされた質問 「phpunit」

PHPUnitは、PHP向けのプログラマ指向のテストフレームワークです。ユニットテストフレームワーク用のxUnitアーキテクチャのインスタンスです。


13
PHPUnitで単一のテストメソッドを実行する方法
私は名前の単一のテストメソッドを実行するために苦労していtestSaveAndDropたファイルにescalation/EscalationGroupTest.php付きをphpunit。私は次の組み合わせを試しました: phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop いずれの場合も、ファイル内のすべてのテストメソッドescalation/EscalationGroupTest.phpが実行されます。代わりにメソッドを1つだけ選択する方法は? クラスの名前はEscalationGroupTestで、バージョンphpunitは3.2.8です。
334 php  phpunit 

8
PHPUnitで保護されたメソッドをテストするためのベストプラクティス
私は上の議論見つけ、あなたがプライベートメソッドのテストドゥ参考に。 一部のクラスでは、メソッドを保護したいが、それらをテストしたいと思いました。これらのメソッドのいくつかは静的で短いものです。ほとんどのパブリックメソッドはそれらを使用するため、後でテストを安全に削除できるでしょう。しかし、TDDアプローチから始めてデバッグを回避するために、私は本当にそれらをテストしたいと思います。 私は次のことを考えました: 回答でアドバイスされているメソッドオブジェクトは、これではやり過ぎのようです。 パブリックメソッドから開始し、上位レベルのテストによってコードカバレッジが提供されたら、それらを保護してテストを削除します。 保護されたメソッドをパブリックにするテスト可能なインターフェイスを持つクラスを継承します ベストプラクティスはどれですか。他に何かありますか? JUnitは自動的に保護されたメソッドをパブリックに変更するようですが、私はそれを深く見ていませんでした。PHPはリフレクションを介してこれを許可しません。

16
PHPユニットテストの実行中にCLIで出力する方法
PHPUnitテストを実行するときに、出力をダンプして1つまたは2つのことをデバッグできるようにしたいと考えています。 私は次のことを試しました(PHPUnitマニュアルの例と同様)。 class theTest extends PHPUnit_Framework_TestCase { /** * @outputBuffering disabled */ public function testOutput() { print_r("Hello World"); print "Ping"; echo "Pong"; $out = "Foo"; var_dump($out); } } 結果は次のとおりです。 PHPUnit @package_version@ by Sebastian Bergmann. . Time: 0 seconds, Memory: 3.00Mb OK (1 test, 0 assertions) 予期された出力がないことに注意してください。 2011年9月19日の時点で、gitリポジトリの HEADバージョンを使用しています。 の出力php -version: …

6
抽象クラスのテスト
PHPUnitで抽象クラスの具象メソッドをテストするにはどうすればよいですか? テストの一部として何らかのオブジェクトを作成する必要があると思います。ただし、これのベストプラクティスや、PHPUnitでこれが許可されているかどうかはわかりません。

11
PHPUnit MockObjectsがパラメーターに基づいて異なる値を返すようにするにはどうすればよいですか?
'return value'引数に関係なく返すPHPUnitモックオブジェクトを持っています。 // From inside a test... $mock = $this->getMock('myObject', 'methodToMock'); $mock->expects($this->any)) ->method('methodToMock') ->will($this->returnValue('return value')); 私ができることは、モックメソッドに渡された引数に基づいて異なる値を返すことです。私は次のようなことを試しました: $mock = $this->getMock('myObject', 'methodToMock'); // methodToMock('one') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('one')) ->will($this->returnValue('method called with argument "one"')); // methodToMock('two') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('two')) ->will($this->returnValue('method called with argument "two"')); しかし、これは、モックが引数'two'で呼び出されない場合にPHPUnitが文句を言うのでmethodToMock('two')、の定義が最初の定義を上書きすると仮定します。 だから私の質問は:PHPUnitモックオブジェクトを取得して、その引数に基づいて異なる値を返す方法はありますか?もしそうなら、どのように?


12
SimpleTestとPHPunit
この両方の経験を持っている人なら誰でも、この2つの違いの重要性に光を当てることができるかどうか疑問に思っていましたか? 特定のケースに適したものにする特定の強さはありますか?

7
PHPユニットでassertEqualsとassertSameの違いは?
PHPUnitには、assertEqualsメソッドが含まれています。https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertEquals また、assertSameメソッドもあります。https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertSame 一見、彼らは同じことをしているように見えます。2つの違いは何ですか?なぜ両方とも指定されているのですか?
121 phpunit 

5
phpunitモックメソッドの引数が異なる複数の呼び出し
異なる入力引数に対して異なるmock-expectを定義する方法はありますか?たとえば、DBというデータベースレイヤークラスがあります。このクラスには "Query(string $ query)"というメソッドがあり、そのメソッドは入力時にSQLクエリ文字列を受け取ります。このクラス(DB)のモックを作成し、入力クエリ文字列に依存する異なるクエリメソッド呼び出しに異なる戻り値を設定できますか?
117 php  mocking  phpunit 

1
phpunitが失敗したときに停止するように指示する方法
私はphpunitテストの大規模なスイートを実行しています。すべてのテストが完了するのを待ってすべての失敗を一覧表示するのではなく、失敗したテストがすぐに失敗するのを確認したいと思います。 これを行うようにphpunitに指示するにはどうすればよいですか?

7
PHPUnitを使用してPHPヘッダーをテストする
PHPunitを使用して、カスタムヘッダーを出力するクラスをテストしようとしています。 問題は私のマシンではこれです: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); $headers_list = headers_list(); header_remove(); ob_clean(); $this->assertContains('Location: foo', $headers_list); } } またはこれさえ: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); header_remove(); ob_clean(); } } このエラーを返す: name@host [~/test]# phpunit --verbose HeadersTest.php PHPUnit …

21
PHPUnit-構成ファイルを使用する場合、「テストは実行されません」
問題 コードの品質を向上させるために、平凡な最高のテストソリューションではなく、単体テストを使用してコードをテストする方法を学ぶことにしました。 私は、一般的なデータベース機能を実現できるパーソナルライブラリ用のcomposerを使用してPHPUnitをインストールすることにしました。最初はPHPUnitの構成ファイルがなく、次のようなコマンドを実行したとき。 $ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest これはターミナルコマンドであるため、.php拡張子を含めなかったことに注意してください。上記のGeneralStringFunctionsTestは、実際にはGeneralStringFunctionsTest.phpファイルです。 出力は私が期待したものです: 時間:31ミリ秒、メモリ:2.75Mb OK(1つのテスト、1つのアサーション) 次に、毎回手動でファイルを入力する代わりに、構成ファイルを使用してテストスイートを自動的にロードしようとしました。phpunit.xmlルートディレクトリにというファイルを作成し、ファイルに次のように入力しました。http://pastebin.com/0j0L4WBD: <?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit> ここで、コマンドを実行すると、次のようになります。 phpunit 次の出力が得られます。 SebastianBergmannと寄稿者によるPHPUnit4.5.0。 /Users/muyiwa/Projects/DatabaseHelper/phpunit.xmlから読み取った構成 時間:16ミリ秒、メモリ:1.50Mb テストは実行されませんでした! 役立つ場合、私のディレクトリ構造は次のとおりです 。src-トップレベルディレクトリ(すべてのソースコードを含む) テスト-トップレベルディレクトリ(すべてのテストを含み、srcフォルダと同じ構造) ベンダー-Composerサードパーティファイル また、composer jsonとlockファイル、およびトップレベルのphpunitxmlファイルをファイルとして持っています。 私が試したこと ディレクトリをに変更phpunit.xmlするtests/GeneralStringFunctions ディレクトリをに変更phpunit.xmlする./tests phpunit.xmlファイルをtestsディレクトリに移動してから、ディレクトリをの./代わりに変更しますtests。 のディレクトリタグにサフィックス属性を追加しphpunit.xmlて、明示的なサフィックスとして「テスト」を指定します。

3
PHPunitでテストをスキップする方法は?
jenkinsに関連してphpunitを使用していますが、XMLファイルで構成を設定して特定のテストをスキップしたい phpunit.xml コマンドラインで使用できることはわかっています。 phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest <filters>タグはコードカバレッジ専用であるため、これをXMLファイルに変換するにはどうすればよいですか? 以外のすべてのテストを実行したい testStuffThatAlwaysBreaks
88 php  phpunit 

7
phpunitはモックのコンストラクター引数を回避します
phpunitがモックオブジェクトのコンストラクターを呼び出さなくて済むようにする方法は何ですか?それ以外の場合は、コンストラクター引数としてモックオブジェクト、そのための別のオブジェクトなどが必要になります。APIは次のようになります。 getMock($className, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) 動作しません。$callOriginalConstructorfalseに設定されていても、コンストラクター引数について文句を言います。 コンストラクターにはオブジェクトが1つしかなく、それは依存性注入です。ですから、デザインに問題はないと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.