SimpleTestとPHPunit


127

この両方の経験を持っている人なら誰でも、この2つの違いの重要性に光を当てることができるかどうか疑問に思っていましたか?

特定のケースに適したものにする特定の強さはありますか?


私はPHPUnitに行くほうがいいです
joao baptista '28

9
... なぜ?資源/リンク/ examples.oを提供し、あなたの答えを説明しよう
マヌエル・

<snark>なぜ両方ではないのですか?</
snark

回答:


90

この質問はかなり古くなっていますが、トラフィックと回答が得られているので、ここでもう一度ポイントを述べましたが、他の(新しい)質問ですでにそれを行いました。

私はよ本当に SimpleTestのがいることに困惑まだ PHPUnitでの代替と考えられています。多分私は誤解されているかもしれませんが、私が見た限りでは:

  • PHPUnitが標準です。ほとんどのフレームワークはそれを使用します(Zend Framework(1&2)、Cake、Agaviのように、SymfonyもphpunitのSymfony 2に独自のフレームワークをドロップしています)。
  • PHPUnitはすべてのPHP IDE(Eclipse、Netbeans、Zend Stuide、PHPStorm)に統合されており、適切に動作します。
  • Simpletestには、PHP 5.1(別名)用のEclipse拡張機能があり、他には何もありません。
  • PHPUnitは、コードカバレッジおよびテストレポートのすべての標準ログファイルを出力するため、すべての継続的インテグレーションサーバーで正常に動作します。
  • Simpletestはしません。これは最初から大きな問題ではありませんが、「ただテストする」のをやめてソフトウェアの開発を始めると、大きな時間を費やすことになります(はい、そのステートメントは挑発的です:)あまり真剣に受け止めないでください)。
  • PHPUnitはアクティブに維持され、安定しており、すべてのコードベース、すべてのシナリオ、およびテストを作成するすべての方法に最適です。
  • (主観)PHPUnitはより優れたコードカバレッジレポートを提供します、Simpletestよりもはるかに優れた
  • PHPUnitを使用すると、これらのレポートをIDE(Netbeans、Eclipseなど)内でも取得できます。
  • また、に対する提案がいくつかありweb interface to phpunit testsます。

SimpleTestを支持する議論はまだ見ていません。PHPUnitはpear経由で利用できるため、インストールはさらに簡単ではありません。

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

「最初のテスト」はほとんど同じに見えます。

とおりPHPUnit 3.7、それはだインストールしても、簡単にだけ使用して、それをPHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

または、pharをダウンロードして実行するWindowsの場合:

php phpunit-.phar

またはサポートされている作曲家のインストール方法を使用する場合

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

あなたのcomposer.jsonに。


PHPUnitをテストしたいものすべてに解決策があり、どこにいてもヘルプを見つけることができます(SO、#phpunit ircチャネルがfreenodeにあり、ほとんどすべてのphp開発者;))

私が何か間違ったことを言ったか、何かを忘れてしまった場合は私を修正してください:)

PHPテストツールの概要

ビデオ:http : //conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

スライド:http : //www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

それは、Atoumのように自分自身を呼び出すものについて言及しています:「PHP用のシンプルでモダンで直感的なユニットテストフレームワーク!」


完全な開示

最初にこの回答を書いたのは2011年1月で、PHPテストプロジェクトとは何の関係もありませんでした。それ以来、私はPHPUnitの寄稿者になりました。


5
simpletestのWebテストは、phpunitのWebテストよりも設定と実行がはるかに簡単であることを発見しました。これはphpではほとんど必要であるため、これは小規模から中規模のプロジェクトに有利です。この場合、テストフレームワークを瞬時に投げたいだけで、重要なのは単純なレベルのテストです。たとえば、ウェブテストを除いて、私はassertTrue()メソッドをsimpletestでのみ使用する傾向があります。もちろんWebテストはもっと複雑になりますが、過度に複雑である必要はありません。
Kzqai

1
">これはphpではほとんど必要なので"-私はこれに強く反対します。ブラウザを介してテストを実行する phpプロジェクト(またはフレームワーク)はまだ見たことがありません。それは実際には何の利益もない多くの問題を引き起こします。PHPのコードがFTP同期を使用する共有ホスティングシステムで開発された時代は死んで消え(指が交差しました)、小さなプロジェクトでさえ、実行中のWebサーバーは必要ありません(多くの場合、phpは箱から出して出荷されます)。cliやIDEではなく、ブラウザーを介したUNITテストは非常にまれなユースケースであり、まったく重要ではないと思います。
エドリア語

13
PHPUnitを介してSimpleTestを検討する大きな理由は、後者がテストを実行するサーバーにインストールする必要があるコマンドラインツールであるためinclude、SimpleTest .PHPファイルを使用するよりもはるかに難しい場合があることです(他の人が説明しているように)。打ちにくい、独自のテスト環境用のPHPUnitの音を構築するが、PHPベースのオープンソースアプリにテストシステムを統合する場合は、プロのプログラマのための「開発者」のアプリのためには、最高の状態でもあり、「職業プログラマ」(私が呼んでいるもの)、その後SimpleTestのシンプルさは、とにかく私にとって魅力的です。FWIW。
MikeSchinkel、2012

2
@MikeSchinkel私はこれ以上同意できませんでした。私たちは、SimpleTestを、カスタムのアプリケーションフレームワーク用の統合ブラウザーベースのテストソリューションとして使用しました。それは常に利用可能で、フレームワークのソースに含まれていたため、svn pull以外のインストール構成は必要ありませんでした。CIS統合のためにPHPUnitに移動しました。私たちがWindowsショップであるため、PHPUnitのインストールと構成は悪夢のようなものになる可能性があり、ジュニア開発者の多くは単に環境を壊すか、テストする意欲を失うだけです。
Gavin

1
スライドへのリンクが壊れています。
Dmitri Zaitsev 2013年

35

今はPHPUnitを好みますが、コマンドラインにアクセスできるとは限らないため、最初はSimpleTestを使いました。SimpleTestは素晴らしいですが、私の意見では、PHPTestを本当に超えているのはWebランナーだけです。

PHPUnitが好きな理由は、Phing(SimpleTest と同様)、phpUnderControlXincなどの他のPHP開発者ツールと統合できるためです。バージョン3.0の時点では、モックのサポートがあり、活発に開発されており、ドキュメントは優れています。

実際にこの質問に自分で答える唯一の方法は、両方をしばらく試してみて、どちらが自分のスタイルにより適しているかを確認することです。

編集:PhingはSimpleTestにも統合されました。



18
  • PHPUnitをダウンロードしてインストールする方法を理解できませんでした。
  • しかし、SimpleTestのインストール方法は簡単に理解できました。

    (私が覚えている限り、PHPUnitの説明は、「PEARを使用してインストールし、他の方法での説明は行いません」という説明に従っています)を参照してください。

  • http://www.phpunit.de/manual/current/en/installation.html

以下のためのSimpleTestの、ちょうどそれをダウンロードします。コードからそれを指します。

Simpletestが勝ちました。


4
回答を投稿してからドキュメントが変更されたと思います。今日は、3つのコマンドを入力するだけでインストールされます。自分でダウンロードする必要はありません。
Anti Veeranna 2010

5
PEARを介してPHPUnitをインストールし、手動でダウンロードするか、githubから最新のコードを取得できます。ホームページにインストール手順への明確なリンクがあります。SimpleTestは、sourceforgeを指すオプションを1つしか与えず、無数のコマーシャルです...
Potherca

1
Windowsでは、PHPUnitをインストールするのは面倒です。2台のワークステーションにインストールする必要がありました。最初のものはPEAR IRCシャネルの助けを借りて3時間かかりました。2つ目(同じOS)の場合、私は成功しませんでした。そうは言っても、Linuxでは魅力的です。
FMaz008 2011

1
SimpleTest +1インストールが簡単使いやすい。PHPUnitは強力ですが、私のニーズを満たすには最も単純です。
チャンヤン

09年以降は状況が変わった可能性がありますが、PHPUnitはWindowsで数個のコマンドを実行するだけで数秒でインストールされます。
Cypher 2013


13

受け入れられた回答で言及されている点の半分は、単に真実ではありません。

SimpleTest

  • より簡単なセットアップ(フォルダーに抽出、組み込み、実行)
  • フォルダーをバージョン管理にチェックインするだけです(今すぐphpunitで実行してみてください:))。
  • 依存関係が少なく、多くの拡張機能(webtester、formtester、auth)
  • 拡張が容易な優れたコードカバレッジレポーター(ドット、関数名、色)
  • コードカバレッジの概要(最終的にはPHPUnit 4.xに追加されました)
  • まともなWebランナーとAjax Webランナー、グループと単一ファイルの実行
  • さらに優れたdiffツール(空白や改行の問題なし)
  • phpUnitによってSimpleTestsを実行するためのアダプター/ラッパー、およびその逆
  • 互換性PHP5.4 +

欠点:

  • 業界標準ではありません(PHPUnit)
  • 積極的に維持されていない

1
私と上司の
php4

ありがとう。SimpleTestのコードベースをアップグレードして、新しいバージョンのPHPで動作するようにしました。今年中にはさらに調整が行われる予定です。-PHP4は古くからEOLであり、セキュリティパッチを入手していません。外部サービスではもう使用しません。上司に少なくともv5.5以上のv5.6への更新の実行を許可するように説得する必要があります。php.net/ supported
Jens A. Koch

私はイェンスを知っています、アドバイスをありがとう。非常に優れたテストソリューション
javier_domenech 2016年

1
=)Githubリポジトリを見せてくれてありがとう。「メンテナンスされていないビット」について心配し始めました。表面的には、心に留めておいてください。私が操作する最新のコードを使用して、手間のかからないテストフレームワークから、私が望んでいたすべてのことを実行します。
ジェテオン2016年

SimpleTestは、phpコードですべてを実行できるため、テストスイートのセットアップ方法に柔軟性をもたらします。したがって、XML構成ファイルや端末パラメーターだけでなく、完全なプログラミング言語を自由に利用できます。PHPUnitはツールによってよりサポートされる可能性がありますが、PHPコミュニティが劣ったものをバックアップすることを選択し続ける方法について詳しく述べています。
still_dreaming_1 2016年

8

SimpleTestはPHPUnitよりもセットアップが簡単であることがわかりました。抽出するだけでよいのです。この利点は、複数のマシンで作業している場合です。テストフレームワーク全体をソースコードと同じ方法で保存できるため、同じフレームワークコードを使用していることがわかります。特に、何らかの方法で変更した場合。

つまり、SimpleTestの強みは、非常に軽量でポータブルであることです。

SimpleTestには、非常にシンプルなHTML GUIも同梱されており、必要に応じて拡張するのは非常に簡単です。私の知る限り、PHPUnitにはHTML GUIは含まれていませんが、Coolなどのダウンロード可能なGUIがあります。


ああ、私は偶然これに完全に反対票を投じ、翌日までそれを悟ることさえしませんでした。今私の投票は固定されています...すみません。
still_dreaming_1

8

まあ私はphpUnit WebベースのUIテストケースランナーを作成し、sourceforgeで利用できるようにしました。Ajaxを使用しており、sourceforgeでショットを確認したい場合は、非常に優れたインターフェースも備えています。プロジェクト名はphpunitwebui、ウェブサイトはhttp://phpunitwebui.sourceforge.net/です。


4

先に述べたように、どちらもユーザーが記述したテストを実行して結果を報告するため、ほとんどの場合は設定の選択です。

SimpletestウェブUIは非常に便利ですが、面倒になることもあります。私の現在のプロジェクトでは、アプリケーション(API)をWebインターフェースで動作させる(Apacheを正しく設定する、ファイルをpublic_htmlルートにコピーするなど)ために、システムにさらに多くの作業を行わなければなりませんでした。 Eclipseワークスペースから単純にphpunitを実行します。したがって、PHPUnitを選択します。また、更新を手動で追跡する必要がないため、PEARの使用は大きなプラスでした。たまに実行するpear upgradeだけで、PHPUnitは最新の状態に保たれます。


この分析は得られません。ローカルのApacheセットアップではなく、phpunitのeclipseプラグインを介してブラウザータイプの機能をテストしていると言いますか?
Kzqai

いいえ、私のプロジェクトでは、ブラウザータイプの機能がないため、Eclipseを介してphpunitを使用していると言っています。
T0xicCode

2

これは非常にカジュアルなPHP開発者の観点からです。

PHPUnitを把握するのに2日かかりました。ほとんどが私が最終的にあきらめたEclipseでデバッグしようとしていました。

Eclipseでのデバッグを含むSimpletestのセットアップに2時間かかりました。

多分私は将来的にSimpletestの不足を見つけるでしょうが、これまでのところ、私が必要とするもの(TestClasses、Mockオブジェクト、テストコードデバッグ、状況のクイックスナップショット用のWebインターフェイス)はうまく機能しています。

繰り返しますが、これは非常にカジュアルなPHPユーザーの視点からです(開発者でさえありません:-)。


1

Simple Testをしばらくチェックしていませんが、前回はEclipseプラグインがありました。これは私にとって重要な要素ですが、長い間更新されていません。Sebastian BergmannはまだPHPUnitに積極的に取り組んでいますが、Eclipse用の優れたプラグインはまだありませんが、新しいZend Studioに含まれています。


1

この質問は古いですが、私の経験を付け加えたいと思います。PHPUnitは今では標準になっているようですが、多数のグローバル変数を使用するレガシーシステムで作業している場合、最初から行き詰まることがあります。PHPUnitでグローバル変数を使用してテストを行う良い方法はないようです。$ GLOBALSを介して変数を設定する必要があるようですが、どこにでもグローバル変数を設定する大量のファイルがある場合は問題ありません。問題はレガシーシステムにあると言う人もいますが、それはそのようなシステムでテストを実行できないという意味ではありません。SimpleTestでは、そのようなことは簡単です。PHPUnitがクラス/関数スコープ内ではなくグローバルにファイルを含めることを許可する場合、それはあまり問題にはなりません。

別の有望な解決策はhttp://www.enhance-php.comで、見栄えが良いです:)


私は常に構成<phpunit backupGlobals="false">XMLで使用しただけで、テストでグローバルに問題が発生したことはありません...
Potherca

@ mr1031011リンクが役に立たない。多分あなたが意味したのですか?:github.com/Enhance-PHP/Enhance-PHP
user12345

それについて教えてください@Potherca -私は当初、レガシーコードプロジェクトにおけるグローバルでの問題の多くを持っていた、と私はすべての注釈@backupGlobals @backupStaticAttributes @runInSeparateProcess @preserveGlobalStateを試みたと思いますが、global $xxxそのすべての組み合わせを、しようとする前に--no-globals-backup、突然すべて見ます期待どおりに動作しています。:D
conny 2014

-2

一度にテストする関数が何千もある場合、phpunitが適しています。単純なテストでは、Webベースでは不十分です。

私はまだ小規模なテストに単純なウェブを使用しています。

しかし、どちらも良いです


SimpleTestは純粋にWebベースではありません。これまでは、コマンドラインからのみ使用してきました。
ジェテオン2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.