質問: $model->getitems(); var_dump($worlds); $this->assertnotempty($worlds); } } phpunit.xml:<phpunit bootstrap="bootstrap.php" colors="true" converterrorstoexceptions="true" convertnoticestoexceptions="true" convertwarningstoexceptions="true" processisolation="false" stoponfailure="false" syntaxcheck="false" verbose="true"> </phpunit> 2回目の試み この回答 が表示された後、私はテストをjoomlaインストールの下のtest/unitの下に置き、phpunit.dist.xmlとbootstrap.phpをjoomla-cmsリポジトリから適切な場所にコピーしましたが、fatal error: class 'contentcontroller' not found in c:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelshelloworldstest.php on line 5 以前受けていたエラー。
回答: 私の答えがあなたの問題に直接対処していない場合は申し訳ありませんが、joomlaについて話しているかどうかに関係なく、ユニットテストとは何か、およびその使用方法を理解することが重要です。あなたは多くの問題に対処しましたが、それらすべてに対処することはかなり困難です。まず第一に phpunit にあるドキュメントを読むことが重要です。 (joomlaから独立して)小さなクラスを自分で構築し、そのためのテストをいくつか書いてみましょう。このようなシナリオで最初に実行するphpunitを入手してください。それが何をするかを理解してください。 phpunitが開発にどのように役立つかを理解するのではなく、phpunitを実行することに集中しすぎていると思います。joomlaを実行するには、次のものが必要です。 bootstrap.php-joomlaのインスタンスを提供します。 phpunit.xml-phpunit設定の微調整。たとえば、各コンポーネントのテストフォルダーがあるプロジェクト全体に対して1回指定する場合に役立ちます。そのため、一連のテストを実行できます。 発生しているエラーはできるだけ明確です。 'contentcontroller'は明らかにjoomlaによって自動ロードされません。 joomlaのオートローダーが呼び出されているかどうかと、クラスのロードに失敗した理由をデバッガーで確認してください。最悪のシナリオでは、独自のオートローダーを提供し、bootstrapファイルを使用してそれを呼び出します。簡単な修正は、require_onceで必要なファイルを手動でロードすることでもあります。テストするものを決定し、モックアップを使用します提供されている例では、jmodelを使用してデータベースからデータをフェッチしています。これはtddの観点からは立ち入り禁止です。データベースからデータをフェッチできることをテストすることには、imhoの価値はありません。そこで何をテストしていますか?データベースのデータを操作する必要がある場合は、モックを使用してデータベースからの応答をモデル化します。このようにして、テストは長期にわたって一貫した動作をします。データベースで何かを変更したからといって、テストが失敗したくはありません。あなたが何かをテストする意味がある何かを計算するメソッドがある場合。これはユニットテストです。複雑なシステムから小さなユニットを取り出し、偽のテストデータをフィードして、その動作をテストします。システムが全体として機能することを確認する必要がある場合は、システムテストを使用してください。