【发布时间】:2012-07-28 09:20:37
【问题描述】:
我是单元测试的新手,我正在尝试在我正在处理的现有项目中开始使用 PHPUnit。
我面临的问题是我有很多单元测试需要一个足够公平的数据库。我已经建立了一个 SQLite 数据库,仅用于单元测试。有时我想为新的测试删除并重新创建数据库(我的意思是每个单独的类),以防止不必要的数据冲突。
但是,如果我在同一个类中有相互依赖的单元测试,有时我不希望这种情况发生;这些可能需要访问之前测试中保存的数据。
我目前在每个类的 setUp() 函数中都获得了一个“新鲜”的数据库。我没想到的是这个函数(与 __construct() 一样)会在所述类中的每个测试用例之后运行。
有没有办法用每个测试类刷新数据库?还是我错误地处理了整个过程?
感谢任何提示,谢谢。
【问题讨论】:
-
我在 PHPUnit 的自学方面还没有走那么远,但我感觉您可能想查看 @depends 注释。我相信这可以让您表明测试取决于其他测试的结果,尽管我不确定它是否会保留从一个测试到下一个测试的状态。另外,只是关于架构的说明。直接与 DB 通信的对象集应该相当小,更高级别的对象使用 DB 对象进行间接通信。然后在进行测试时,您可以模拟数据库对象以供其他对象与之交谈
-
@PeeHaa 我读了它,因为他纯粹使用 sqlite 数据库进行测试。
-
@PeeHaa 我正在使用内存数据库进行测试