我在Symfony2项目中的所有条令实体中进行了一些单元测试。我在类UserTest中测试setter/getter,在类UserDbTest中测试具有db持久性的setter/getters,所有文件都在测试文件夹下的Entity
文件夹中测试这两者是一个好主意吗?放置Db类的最佳位置是什么?
谢谢你的建议!
如果Entity
类中没有自定义数据库逻辑(不应该有),则不必创建单元和功能测试。条令经过测试,即确保persist
/flush
正确工作,并且不必重复这些测试。
然而,如果你想测试,例如,如果你的查询工作正常,我个人有一个XYManager
类(其中XY
是实体的名称),我在其中放入了所有自定义数据库逻辑(以及进一步的抽象)。我的方法受到了FOSUserBundle的启发(请参阅他们的UserManager)。
在我的项目中,Entity
和EntityManger
类都在捆绑包的Entity
文件夹中,这些类的测试在Tests/Entity
文件夹中。由于功能测试比单元测试花费的时间要长得多,所以我使用PHPUnit的@group
注释将它们分开。我将@group unit
添加到所有不需要数据库且不属于WebTestCase
的测试中,将@group functional
添加到所有需要数据库或属于WebTestCase
的测试中。
如果我只想执行单元测试,我可以进行
phpunit -c app/ --group unit`
和
phpunit -c app/ --group functional
将只执行功能测试。
phpunit -c app/
将执行功能测试和单元测试。