use*_*127 27 php unit-testing cakephp
我想知道,你们怎么在CakePHP进行单元测试?你如何在项目中加入测试?你测试的项目的哪些部分?您如何确定哪些部件可以进行单元测试?你们还能在截止日期前完成工作吗?
Abb*_*ant 39
我想知道,你们怎么在CakePHP进行单元测试?你如何在项目中加入测试?
我通常使用Cake Core使用的最简单的设置.我为每个控制器和模型设置了一个测试文件.我通常测试助手/组件/行为的输出,如果代码具有复杂的选项或者助手具有很大的可变输出.我发现我的覆盖率大约是65-75%,即使我的测试代码覆盖率如此之低(65%的有限文件子集也很弱)我通过测试发现或修复了比我发现的更多错误没有正确固定.
你测试的项目的哪些部分?您如何确定哪些部件可以进行单元测试?
我总是测试所有模型功能.自定义查找,分页结果集等.我测试以下内容.正确的结果数量(来自夹具数据的查找),正确的结果集(来自夹具数据的查找),返回的字段的正确性,返回的结果数量以及每个自定义查找类型的正确数据集.如果我在任何查找,自定义或其他方面使用分页集,请更正分页.
我总是测试不会导致视图呈现的控制器函数.作为一种习惯,我倾向于移动所有不专用于设置视图变量的逻辑,或者选择一个视图来渲染控制器中的私有/受保护函数或模拟函数调用.这让我可以直接测试剩余的控制器动作(带视图输出的动作).如果我渲染视图都那么这些功能都可能表现细跟任何问题什么是呈现进一步被调用堆栈.
我使用特定的选项集测试助手的输出.我并不总是涵盖options数组的所有排列,但是当两个不同的键导致互斥行为时,或者我可以检查我的标记中包含的可预测属性 - 我测试这些场景.
如果一个组件从某个地方获取数据并对其进行操作,我也会检查格式或返回组件函数的数据.行为相同.
如果我在某个地方使用静态类,我将测试该类中的函数以获得正确的返回结果,以及生成一些强制失败或故意错误条件.特别是如果错误导致重定向,或者数据以某种形式向下发送到管道.如果失败是静音或返回默认值,我也会检查以确保实际发生.
你们还能在截止日期前完成工作吗?
这里的第一个通过截止日期总是略微"软"以考虑测试和出现的任何问题.我发现如果您使用普通的旧铅笔和一些方格纸或白板,您甚至可以在编写任何代码之前轻松找出一组基本测试.使用这种方法,您可能会发现项目预先花费的时间增加了25%,但是在应用程序的整个生命周期中,您可以轻松地节省前期花费的25%,因为没有太多问题需要进一步处理.
我编辑了这个以添加一些链接来查看实际的测试技术,并作为一种方式来了解它们如何结合在一起.
此外,我必须同意并不同意编写测试的蛋糕开发者.这是考验你想重用任何一个很好的主意-无论是单个组件文件或者复杂的插件-因为你会被分配它和测试都显示工作代码,并且是有什么可以用一块做很好的例子代码
至于不测试控制器,因为你必须使用模拟对象 - 这只是一个微弱的借口,不要做一些棘手的工作,一旦你打扰它变得相当容易每次你做它真的,真的降低错误率并大大增加您对自己代码的理解.
归档时间: |
|
查看次数: |
7517 次 |
最近记录: |