我是一般的单元测试新手,但是想用MVC模式实现它(使用PHP)。现在我不确定如何处理这个问题。
单元测试应该构建到框架中,还是只创建一个名为tests的新文件夹,并包含所有必需的类和单元测试?
简而言之,如果有一个模型M,它也与框架本身有一些耦合。那么为了测试模型,我应该在单元测试中包含框架的某些部分吗?
是否有一些关于如何实现此目的的良好代码示例。
答案 0 :(得分:9)
单元测试应该构建到框架中,还是只创建一个名为tests的新文件夹,并包含所有必需的类和单元测试?
你绝对应该为它创建一个单独的文件夹。出于性能和调试原因,通过测试来混乱生产代码通常不是一个好主意。
因此,为了测试模型,我应该在单元测试中包含框架的某些部分吗?
至少越好。单元测试应该几乎不需要依赖。如果类A
取决于B
,则应该模拟B
以确保如果B
失败,则不会使A
失败。
单元测试(正确完成时)的主要优点是它可以让您轻松查明问题。如果A
由于其B
依赖关系而失败,您将首先查看A
,然后 B
。同样,如果B
取决于C
而C
失败,则您必须查看A
,B
和然后 { {1}}。这几乎破坏了单元测试的最大优势之一。如果所有测试都正确完成,C
中的失败不会导致C
以外的任何其他失败,因此您将只有一个类来查找以解决问题。
要真正使代码防错,可以将单元测试与PHP assertions结合使用:
C
顺便说一下,单元测试MVC 与一般的单元测试没有区别。
答案 1 :(得分:1)
单元测试应该是MVC框架的一部分。例如,请查看CodeIgniter用户指南的Unit Testing Class章节。
答案 2 :(得分:1)
单元测试应该内置于 框架,或者我们只是创建一个新的 名为测试的文件夹
如果您使用的是第三方框架,它通常会包含一些单元测试帮助程序,但您需要将自己的测试类放入单独的文件夹中,以便(例如)您可以滚动发布分发软件,不包括它们。
包括所有必要的课程和单元测试?
每个应用程序类通常都有一个测试类。所以,如果你有一个模型类M,你将有一个测试类M_Test(或你采用的任何命名约定。)
如果您还不熟悉PHPUnit
,那么您需要抓住它并阅读他们的文档。