1

Symfony2 プロジェクトのすべてのドクトリン エンティティで単体テストを行います。クラス UserTest でセッター/ゲッターをテストし、クラス UserDbTest で db 永続性を使用してセッター/ゲッターをテストします。すべてのファイルはEntityテスト フォルダーの下のフォルダーにあり、両方をテストすることをお勧めします。 DBクラス?

アドバイスありがとうございます!

4

1 に答える 1

6

クラスにカスタム データベース ロジック (持つべきではない) がないEntity場合は、単体テストと機能テストを作成する必要はありません。Doctrine はテストされています。つまり、persist/flushが正しく動作することが保証されており、これらのテストを繰り返す必要はありません。

ただし、たとえば、クエリが正しく機能するかどうかをテストしたい場合は、個人的にXYManagerクラス (XYはエンティティの名前) を持っており、そこにすべてのカスタム データベース ロジック (およびさらなる抽象化) を配置します。私のアプローチは FOSUserBundle に触発されました ( UserManagerを参照してください)。

私のプロジェクトではEntity、クラスとEntityMangerクラスの両方Entityがバンドルのフォルダーにあり、これらのクラスのテストはTests/Entityフォルダーにあります。機能テストは単体テストよりもはるかに時間がかかるため、@groupPHPUnit の注釈を使用してそれらを分離します。データベースを必要とせず、データベースを必要と@group unitしないすべてのテストと、データベースを必要とするすべてのテストに追加します。WebTestCase@group functionalWebTestCase

私ができる単体テストだけを実行したい場合

phpunit -c app/ --group unit`

phpunit -c app/ --group functional

機能テストのみを実行します。

phpunit -c app/

機能テストと単体テストの両方を実行します。

于 2012-09-07T11:01:39.463 に答える