【发布时间】:2010-05-04 01:51:41
【问题描述】:
昨晚,我和我的同事对我们的 PHP/MySQL 应用程序中的单元测试存在一些分歧。我们中有一半人认为,当在一个类中对一个函数进行单元测试时,您应该模拟该类及其父类之外的所有内容。我们另一半认为,你也不应该嘲笑任何直接依赖于类的东西。
具体的例子是我们的日志机制,它通过一个静态的 Logging 类发生,我们在整个应用程序的不同位置有许多 Logging::log() 调用。我们前半部分说应该伪造(模拟)Logging 机制,因为它将在 Logging 单元测试中进行测试。我们后半部分认为我们应该在我们的单元测试中包含原始的 Logging 类,这样如果我们对我们的日志接口进行更改,我们将能够查看它是否会由于失败而在应用程序的其他部分产生问题更新通话界面。
所以我想基本问题是——单元测试是用来测试封闭环境中单个单元的功能,还是显示在更大环境中更改单个单元的后果?如果是其中之一,您如何完成另一个?
【问题讨论】:
-
+1 这是一个很好的问题,因为它暴露了一些我认为很多人对单元测试感到困惑的东西。
标签: php unit-testing phpunit