在symfony2中放置phpunit DB测试的最佳位置

EAd*_*del 1 phpunit symfony doctrine-orm symfony-2.1

我在Symfony2项目中的所有学说实体中进行了一些单元测试.我在UserTest类中测试setter/getter,在UserDbTest类中使用db persistance进行setter/getter测试,所有文件都在Entity测试文件夹下的文件夹中,测试两者都是一个很好的想法,以及放置这个文件的最佳位置是什么Db课程?

谢谢你的建议!

Flo*_*fer 6

如果你没有定制数据库逻辑(你不应该有)在你的Entity类,您不必创建单元测试和功能测试.对学说进行了测试,即确保persist/ flush正确工作,您不必复制这些测试.

但是,如果要测试,例如,如果您的查询正常工作,我个人有一个XYManager类(XY实体的名称),其中我将所有自定义数据库逻辑(和进一步的抽象)放入其中.我的方法受到FOSUserBundle的启发(参见他们的UserManager).

在我的项目中,它们EntityEntityManger类都在Entitybundle 的文件夹中,这些类的测试都在Tests/Entity文件夹中.由于功能测试比单元测试需要更长的时间,因此我使用@groupPHPUnit 的注释将它们分开.我添加@group unit到不需要数据库,并非对所有的测试WebTestCase,并@group functional以确实需要一个数据库或者是所有测试WebTestCase.

如果我只想执行我能做的单元测试

phpunit -c app/ --group unit`
Run Code Online (Sandbox Code Playgroud)

phpunit -c app/ --group functional
Run Code Online (Sandbox Code Playgroud)

只会执行功能测试.

phpunit -c app/
Run Code Online (Sandbox Code Playgroud)

将执行功能和单元测试.