14

PHPユニットテストの検索を開始すると、通常、次のことに遭遇します。

  1. PHPUnit。
  2. SimpleTest。
  3. PHPUnitとSimpleTestの使用方法を説明する多数のブログ。
  4. PHPUnitとSimpleTestに関するStackOverflowの質問...

...そして私はあなたがその考えを理解したと思います。

私は疑問に思っていました:普通の古いPHPでユニットテストを行うにはどうすればよいですか?それも賢明な努力ですか?

私は自分の小さなフレームワークを構築する必要があると思います。ユニットテストで何が起こっているのかをよりよく理解したいので、興味があります。軽量で調整されたソリューションが私のテストをより速く実行すると思うので、私も興味があります。

ボーナスの質問:弱者は誰ですか?(流行の目的で)検討する価値のある3番目のフレームワークはありますか?

4

4 に答える 4

12

単体テストは基本的に一連のアサーションです。

次の PHPUnit テスト ケースを検討してください。

class MyTest extends PHPUnit_Framework_TestCase {
   public function testFoo() {
       $obj = new My;
       $this->assertEquals('bar', $obj->foo());
   }
}

PHPUnit を使用せずに同様のテスト ケースを作成できます。

class MyTest {
   public function testFoo() {
       $obj = new My;
       assert("$obj->foo() == 'bar'");
   }
}

ただし、フレームワークなしで行うと、テスト ケース (MyTest) のインスタンスを手動で作成し、各テスト メソッドを手動で呼び出す必要があります (MyTest::testFoo など)。

フレームワーク (例: PHPUnit) は、それをより簡単かつ迅速にするための「ヘルパー」のセットにすぎません。組み込みのモック オブジェクト、コマンド ライン スクリプトなどを使用します。

フレームワークがなくても単体テストを行うことはできますが、最終的には、フレームワークを使用したほうが時間を節約できるでしょう。

于 2011-01-12T15:23:28.270 に答える
2

私の見解では、代替品の開発を保証する標準ホイール (おそらく PHPUnit) のどこが悪いのでしょうか? 結局のところ、この場合、実績のある解決策が賢明な選択ではないでしょうか?

さらに、将来的に継続的インテグレーション サーバーを活用したい場合は、標準ツールの出力の方が使いやすくなります。(もちろん、独自のツール出力を同じ形式で作成することもできますが、それでは「車輪を再発明する理由」という議論に戻ります。)

于 2011-01-12T15:17:40.520 に答える
1

私は約 1 年前に SimpleTest を使用しましたが、非常に軽量です。テスト パッケージを自動ロードしてアサートする方法を提供する以外には、特に多くのことはありませんでした。

基本的に、「test」で始まるすべてのクラスが含まれ、そのクラス内で「test」で始まるすべてのメソッドが呼び出されます。メソッド内では、結果が期待どおりであると断言できます。

独自のフレームワークを構築する場合は、事前に SimpleTest を検討することを強くお勧めします。PHP Unit に比べて非常に軽量です (それが気になる場合)。

于 2011-01-12T15:18:00.423 に答える
1

フレームワークがなくても任意の言語でテストを作成できますが、テストで共有するコードは、最終的には一種のミニ フレームワークになります。

優れた単体テスト フレームワークには、アサーション、モック、スタブ、例外処理、コード カバレッジなど、テストを容易にするために必要な共通のものがあります。

おまけの質問: 負け犬は誰? (アカデミック目的で) 検討する価値のある 3 番目のフレームワークはありますか?

PHP 単体テストの分野には弱者がいます。たとえば、モックとスタブが組み込まれた単体テスト フレームワークであるEnhance PHPなどです。これには大手企業に比べていくつかの利点があります。優れたドキュメントがあり、すぐに使い始めることができます。 .

于 2011-08-29T16:48:42.563 に答える