Yii2 アドバンスト・アプリケーションは Codeception を主たるテスト・フレームワークとして使用します。
frontend、backend および common の tests ディレクトリに、既にいくつかのサンプル・テストが用意されています。
下記の手順が動作するために、アプリケーションは dev 環境を使って初期化されているものとしています。
テストを Production 環境で実行する必要がある場合は、yii_test と yii_test.bat が
environments/dev からプロジェクトのルート・ディレクトリへ手作業でコピーされなければなりません。
テストには、テストを実行するたびに事前にクリーンアップされる 追加のデータベース が必要になります。 このデータベースが、本番データベースにあるデータに対応するデータを保持することになります。 目的は、本番のデータに影響を与えることなく、データを保存するテストを実行することです。 本番データベースと同様の設定を使ってデータベース・サーバにデータベースを作成して、 可能な限り本番に近い環境でテストが走らせられるようにします。
common/config/main-local.php に書かれているでしょう。
例えば 'dsn' => 'mysql:host=localhost;dbname=yii2advanced' です。
これを common/config/test-local.php にコピーして、テスト用データベースであることを明示するために dbname を変更します。 `'dsn' => 'mysql:host=localhost;dbname=yii2advanced_test'`
common/config/test-local.php の構成に従って)、
MySql で yii2advanced_test を作ります。./yii_test migrate を実行します。./vendor/bin/codecept buildこれで、以下のコマンドを実行すれば、全てのサンプル・テストが開始されます。
vendor/bin/codecept run
次の図と同じような出力が得られる筈です。

あなたのテストを最新の状態に保つことが推奨されます。クラスまたは機能が削除されたときには、対応するテストも削除されるべきです。 テストは定期的に実行すべきです。あるいは、もっと良い方法として、継続インテグレーション・サーバをテストのためにセットアップしましょう。
Codeception をあなたのアプリケーションのために構成する方法を学ぶために Yii2 Framework Case Study を参照して下さい。
共通クラスのためのテストは common/tests にあります。このテンプレートでは、単体テスト (unit テスト) しか有りません。
下記を実行してテストを実行します。
vendor/bin/codecept run -- -c common
-c オプションが codeception.yml 構成ファイルへのパスをセットすることを可能にしています。
単体テスト (unit テスト) スイート (common/tests/unit にあります) では、Yii フレームワークの機能、例えば、Yii::$app、アクティブレコード、フィクスチャなどを使用することが出来ます。
このことが可能なのは、テストの構成 common/tests/unit.suite.yml において Yii2 モジュールが有効になっているからです。これを無効すると、テストを完全に独立した状態で走らせることが出来ます。
フロントエンドのテストは、単体テスト、機能テスト、受入テストを含んでいます。 下記を実行してテストを実行します。
vendor/bin/codecept run -- -c frontend
テスト・スイートの説明
unit) ⇒ フロントエンド・アプリケーションだけに関係する諸クラスのテストfunctional) ⇒ アプリケーションの内部的なリクエストとレスポンスのテスト (ウェブ・サーバ抜きで)acceptance) ⇒ 実際のブラウザにおけるウェブ・アプリケーション、ユーザ・インタフェイス、javascript 相互作用のテストデフォルトでは、受入テストは無効になっています。受入テストを実行するためには、次のようにします。
受入テストは、デフォルトでは firefox のための geckodriver を使用します。従って、geckodriver が PATH に含まれていることを確認して下さい。.
受入テストを実行するためには、次のようにします。
frontend/tests/acceptance.suite.yml.example を frontend/tests/acceptance.suite.yml にリネームして、スイートの構成を有効にする
composer.json の codeception/base パッケージを codeception/codeception に置き換えて、
全ての機能をもつ Codeception のバージョンをインストールする
Composer で依存を更新する
composer update
受入テストのための新しいサポート・クラスを自動生成する
vendor/bin/codecept build -- -c frontend
Selenium Server をダウンロードして起動する
java -jar ~/selenium-server-standalone-x.xx.x.jar
> 現在、geckodriver には Selenium との相互作用に 問題 があるため、
> Selenium でプロトコル変換を有効にする必要があります。
> java -jar ~/selenium-server-standalone-x.xx.x.jar -enablePassThrough false
ウェブ・サーバを開始する
php -S 127.0.0.1:8080 -t frontend/web
これで全てのテストを実行することが出来る
vendor/bin/codecept run acceptance -- -c frontend
バックエンド・アプリケーションは、単体テストと機能テストのスイートを含んでいます。下記によって、テスト・スイートを実行します。
vendor/bin/codecept run -- -c backend