繁体   English   中英

单元测试CodeIgniter with Simpletest - 很少测试

[英]Unit Testing CodeIgniter with Simpletest - very few tests

在我们的开发团队中,我们决定尝试单元测试。 我们使用Simpletest。 然而,这是一条艰难的道路。 一周后,我只创建了一个测试某个帮助文件的单元测试。 而已。 其余的(控制器,模型,视图,库)还没有单元测试。 我打算不测试其中的大多数。 例如,视图太难以测试,所以我放弃测试。 接下来,控制器。 我计划我的控制器不做复杂的事情,所以它只在模型和视图之间传递信息。 我会把那些更复杂的东西移到图书馆或帮手那里。

现在我的问题:

1)我做错了吗? 到目前为止,我没有看到任何可能错误的内容,因此需要进行单元测试。 大多数东西(现在)只是CRUD。
2)我们真的需要单元测试控制器吗? 由于控制器的工作只是对View和Model之间传递的数据进行微小处理,因此我发现单元测试的主动性很小。
3)如果我使用WebTestCase来测试控制器,那么它仍然被认为是单元测试吗? 或者它已经是集成测试?
4)假设你让我测试我的控制器,我该如何测试它? 据我所知,CI通过index.php跟随前端控制器模式,那么我将如何处理(模拟?)?

如果您仍然对CodeIgniter的其他单元测试提出建议,我建议您尝试Toast 我发现它易于使用,并且不会干扰我的开发过程。

我只使用单元测试来测试我的库,帮助器和模型。 我的控制器没有太多代码,只有post和uri参数,使用trim或intval清理它,将它传递给库或模型,然后将结果传递给view。

View几乎没有代码可以测试,因为它显示浏览器的所有内容。 大多数情况下,它只需要css和js调试。

模型几乎总是需要测试,因为它处理数据。 没有单元测试,我发现很难跟踪一些bug,特别是复杂的计算。

库和帮助程序执行重复性任务,因此需要进行单元测试以确保其中的逻辑正确地完成工作。

我希望这有帮助。

你做错了吗? 我不这么认为。

我们真的需要单元测试控制器吗? 我不。 也许我应该。 看起来好像很多工作。

如果我使用WebTestCase来测试控制器,那么它仍然被认为是单元测试吗? 或者它已经是集成测试? 如果可以检测到一些有意义的输出,WebTestCase将是一种测试控制器的有趣方法; 例如,在调用/ some / specific / path时检测到没有发生错误。

假设你让我测试我的控制器,我该如何测试它? 这是一个艰难的。 您可能需要初始化部分应用程序环境才能执行任何有价值的操作。

大多数文章/书籍都会告诉您开始编码之前定义测试。 也许我已经尝试过,但我通常太不耐烦了。 它似乎妨碍了快速原型设计,但可能定义单元测试一种快速原型设计的方法。

我发现决定用PHP测试什么是一个挑战。 我想你必须选择你的战斗。 如果方法返回特定类型的值至关重要,那么测试它。 如果在实例化对象时自动发生很多事情,您也可以测试它。

一般来说,我所做的 - 对或错 - 是让一切正常,然后创建一些基本测试,然后根据我遇到的任何问题根据需要添加测试。 这个想法永远不会出现重复问题,每个测试都会确保应用程序在其生命周期中的行为相同。

至于具体细节,我使用的是Zend Framework,但它在CodeIgniter中类似。 我也使用SimpleTest(但使用我自己的类包装器)。 我可能会或可能不会对模型进行单元测试,但我从未对控制器或视图进行过测试; 这似乎太多的工作和太少的好处。 大多数框架“早期失败”,因此问题通常很明显。 但是任何常见的库代码都会使更容易的目标和错误 - 特别是逻辑错误 - 更难以检测。 设置测试以确保事情按预期工作,以便特定于框架的代码遇到很少的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM