Composer を介して Sebastian Bergmann による PHPUnit バージョン 3.7.19 をインストールし、単体テストを行いたいクラスを作成しました。
すべてのクラスを使用せずに各単体テストに自動ロードしたいのですが、これは難しいことがわかりました!include
require
これは私のディレクトリ構造がどのように見えるかです (末尾の / スラッシュはファイルではなくディレクトリを示します):
- composer.json
- composer.lock
- composer.phar
- ライブラリ/
- 戻る.php
- テスト/
- 戻るTest.php
- ベンダー/
- 置き場/
- phpユニット
- 作曲/
- phpユニット/
- symfony/
- autoload.php
- 置き場/
私のcomposer.jsonファイルには次のものが含まれています。
"require": {
"phpunit/phpunit": "3.7.*",
"phpunit/phpunit-selenium": ">=1.2"
}
私のreturn.phpクラス ファイルには、次のものが含まれています。
<?php
class Returning {
public $var;
function __construct(){
$this->var = 1;
}
}
?>
私のReturnTest.phpテスト ファイルには、次のものが含まれています。
<?php
class ReturningTest extends PHPUnit_Framework_TestCase
{
protected $obj = null;
protected function setUp()
{
$this->obj = new Returning;
}
public function testExample()
{
$this->assertEquals(1, $this->obj->var);
}
protected function tearDown()
{
}
}
?>
ただし、./vendor/bin/phpunit tests
コマンドラインから実行すると、次のエラーが発生します。
PHP 致命的なエラー: 8 行目の /files/code/php/db/tests/returningTest.php にクラス 'Returning' が見つかりません
ファイルがcomposer
作成されたことに気付きましたが、これが私の問題に関連しているかどうかはわかりません。autoload.php
vendor/autoload.php
また、Stack Overflow に関する他の回答では、composer でPSR-0namespace
を使用し、PHP でコマンドを使用することについて言及されていますが、どちらも使用できませんでした。
助けてください!PHPUnit でクラスを自動ロードしたいだけなので、それらを使用してオブジェクトを作成しinclude
たり、require
.
更新: 2013 年 8 月 14 日
PHPUnit Skeletonという名前のオープン ソース プロジェクトを作成し、プロジェクトで PHPUnit テストを簡単に開始して実行できるようにしました。