0

先週、Zend Studioで単体テストを設定しましたが、正常に機能していました。リファクタリングを行った後、突然、ZendPHPUnit.phpに次のファイルが見つからないというエラーが発生しました。

/var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.2428213892936827201.php 

ファイルパスは、ZendPHPUnit.phpの$_SERVER['ZEND_PHPUNIT_TESTS_LOCATION']に保存されます

フォルダを確認したところ、zend.phpunit.UserrMapperTest.php.6031927106542896607.php(番号が異なります)が見つかりました

私は少し必死だったので、強制的に動作させました

$_SERVER['ZEND_PHPUNIT_TESTS_LOCATION'] = '/var/folders/Td/Tdnh++2KEdWAsk8Y0O4N0k+++TI/-Tmp-/zend.phpunit.UserMapperTest.php.6031927106542896607.php';

最終的に、他のいくつかのテストケースで作業した後、問題は自動的に修正されました。今、私はいくつかのコードを再びリファクタリングしました、そして問題は戻ってきました。私のテストケースはどれも機能しません。

コンプを再起動しても効果はありません。プロジェクト->クリーンは効果がありません。私はSnowLeopardを実行しているMacを使用しています。

これを引き起こしているものについての洞察はありますか?

ありがとう!

4

1 に答える 1

1

問題は、PHPUnit がファイル自体ではなく、その場で作成し、その場で作成されるディレクトリに保存するファイルのコピーで動作することです。これらのファイルは、PHPUnit ロジックを含めるように変更されています。これは、テスト ファイル自体だけでなく、php.iniにも当てはまります (追加の .ini ファイルは無視されるため、テスト用にメインの php.ini ファイルに拡張機能をロードする必要があります)。テストを実行するたびに、これらのファイルは新しい一意の名前(元の名前と一意の識別子)で再作成されます。

この問題を回避するために私が見つけた最善の方法は、テストの起動構成を作成し、プロジェクトに .launch ファイルとして保存することです (右クリック -> 実行 -> 新しい PHPUnit 構成を作成 -> 「共有ファイル」を選択します)。 "共通タブで)。起動構成を取得したら、エディターで開き、[実行] ボタンをクリックするだけでこれを実行できます。それらを実行するたびに、変更された各起動ファイルに次のような行があることがわかります(構成がバージョン管理されているかどうかを簡単に確認できます)。

<mapEntry key="ZEND_PHPUNIT_TESTS_LOCATION" value="/var/folders/my/ph9spb0s45z5_11l9tqw256r0000gn/T/DefaultWorkspace.phpunit.AssignmentRequestControllerDateCriteriaTest.php.4951739174960507380.php"/>

私は通常、この変更を、その時点で取り組んでいた他の変更と一緒にコミットします。

ファイルが変更されて起動構成が変更されるのはまだ面倒ですが、少なくともこの方法では常にテストが実行され、手動で再実行したり、プロジェクトをクリーンアップしたりする必要はありません。そのように。

于 2012-07-24T14:57:19.973 に答える