CakePHP3 でテストの置き場所を変更する #cakephp
概要
CakePHP3 では tests/
配下にテストコードを書くことになっている。
何らかの原因(察して)でパスを規定から変更したい場合の修正箇所に付いてまとめる。
以降 tests/PHPUnit/
に変更すると仮定して記載する。
paths.php
TESTS
が定義されているので書き換える
/*
* Path to the tests directory.
*/
#define('TESTS', ROOT . DS . 'tests' . DS);
define('TESTS', ROOT . DS . 'tests' . DS . 'PHPUnit' . DS);
app/paths.php at master · cakephp/app · GitHub
phpunit.xml
phpunit.xml.dist
などの設定ファイルを用意している場合は書き換える。
- phpunit タグの bootstrap 属性
tests/PHPUnit/bootstrap.php
- testsuite タグの directory
tests/PHPUnit/TestCase/
- etc
<phpunit colors="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/PHPUnit/bootstrap.php" > <!-- 中略 --> <testsuites> <testsuite name="app"> <directory>tests/PHPUnit/TestCase/</directory> </testsuite> <!-- Add plugin test suites here. --> </testsuites> <!-- 中略 --> </phpunit>
app/phpunit.xml.dist at master · cakephp/app · GitHub
tests/bootstrap.php
- パスを修正する
#require dirname(__DIR__) . '/vendor/autoload.php'; require dirname(__DIR__) . '/../vendor/autoload.php'; #require dirname(__DIR__) . '/config/bootstrap.php'; require dirname(__DIR__) . '/../config/bootstrap.php';
※移動しているので tests/PHPUnit/bootstrap.php
になっているはず
app/bootstrap.php at master · cakephp/app · GitHub
composer.json
- autoload-dev のパスを変更
- ここを直さないと Fixture 等が load できない
"autoload-dev": { "psr-4": { "App\\Test\\": "tests/PHPUnit/", "Cake\\Test\\": "vendor/cakephp/cakephp/tests/" } },
app/composer.json at master · cakephp/app · GitHub
まとめ
上記の修正を入れると、別のディレクトリでも App\Test\
な namespace でテストが書ける。
しかしこんなことはやらないほうがよい。
フレームワークを使うならできるだけ変なカスマイズせずに使おう。