CodeIgniter 和 SimpleTest——如何进行我的第一个测试?

Posted

技术标签:

【中文标题】CodeIgniter 和 SimpleTest——如何进行我的第一个测试?【英文标题】:CodeIgniter and SimpleTest -- How to make my first test? 【发布时间】:2011-02-20 04:20:42 【问题描述】:

我习惯于使用 LAMP、php5、mysql 以及带有 Xdebug 的 NetBeans 进行 Web 开发。

现在我想通过学习如何使用 (A) 适当的测试和 (B) 框架来改进我的开发。所以我为 Firefox 设置了 CodeIgniter、SimpleTest 和 easy Xdebug 插件。这很有趣,因为maroonbytes 为我提供了清晰的说明和可供下载的配置设置。我站在巨人的肩膀上,心存感激。

我过去曾使用过一些 SimpleTest。这是我写的那种东西:

<?php
require_once('../simpletest/unit_tester.php');
require_once('../simpletest/reporter.php');

class TestOfMysqlTransaction extends UnitTestCase 
  function testDB_ViewTable() 
    $this->assertEqual(1,1);   // a pseudo-test
  

$test = new TestOfMysqlTransaction();
$test->run(new htmlReporter())
?>

所以我希望我知道测试是什么样的。我不知道在哪里以及如何在我的新设置中进行测试。我在 maroonbytes 包中没有看到任何示例测试,到目前为止,谷歌已经引导我发布假设单元测试已经在功能上可用的帖子。我该怎么办?

【问题讨论】:

嗨!你设法让它工作了吗? 没有。努力尝试,但过了一段时间,我被外界的情况压垮了。最后一次尝试是放弃 maroonbytes 方案并以另一种方式集成 SimpleTest。但是“没有可运行的测试”响应。我应该很快就能恢复我的努力,所以希望我能带来好消息。 此后没有尝试。 Lucid Lynx + Netbeans 的问题。女儿上大学。等等。尽管如此,仍然希望给它一个打击。 【参考方案1】:

首先,必须正确命名测试。为了测试一个控制器欢迎放置在文件welcome.php 中,一个测试被命名为welcome_controller_test.php 并存储在tests/controllers/ 下。更多信息,请参阅this post。

其次,Xdebug 的 GET 参数会干扰测试例程。见上面的帖子,还有this post。

三、我贴的stub测试需要删掉四行:

//require_once('../simpletest/unit_tester.php');
//require_once('../simpletest/reporter.php');
...
//$test = new TestOfMysqlTransaction();
//$test->run(new HtmlReporter())

我现在正在相当愉快地进行测试。 CodeIgniter 让我可以轻松地创建/维护测试,因此我的 TDD 目标看起来可以实现。我之前在 TDD 方面的尝试给了我这个想法,但是从头开始 PHP 对我来说太贫瘠了,无法发挥作用(而且我们不会讨论 VBA!)。

【讨论】:

【参考方案2】:

编辑:

如果您按照 maroonbytes 设置,只需按照说明进行操作:

    下载 SimpleTest 框架并将文件解压缩到您的 @codeigniter 目录中。 在您的主文件夹和管理员/应用程序文件夹中创建一个名为测试的新文件夹。 在新的测试文件夹中设置名为“models”、“views”、“controllers”、“libraries”和“helpers”的附加文件夹

任何以 .php 结尾且在这些文件夹中带有 UnitTestCase 的文件都应该运行。 :)

【讨论】:

感谢法维奥。我给这个多一点时间。我在 WAMP 上,maroonbytes 的测试 GUI 出现故障;今晚我会回到 LAMP 上,我会试试你的答案。而且,你的文件夹结构不同......所以懒惰,我希望 maroonbytes 粉丝会发布一些东西。 Np。 :) 我改变了我的答案,我不确定我之前的答案是否正确。 HTH! 我有一个 .php 文件,其内容如 OP 中所述,我尝试将其存储在各种测试子文件夹中。但我无法通过“CodeIgniter Application Test Suite”界面成功运行测试。我收到“消息:include_once(/var/www/sparts/main/tests/test_suite_3.php)[function.include-once]:无法打开流”。这都是错误的,它应该去 localhost 并且该路径不正确。希望我知道发生了什么事。 Favio,你能提供一个最小/伪测试吗?然后我可以确定这不是我的文件,一方面。 嗯,如果您遇到该错误,并且您的实际文件位于不同的路径中,那么这就是您完成这项工作所需的提示。也许缺少某种配置。我只是尝试调试代码并查看设置路径的位置,以及为什么将其设置为不同的路径。当然,error_reporting(E_ALL) 是你的朋友。你的示例测试很好;只是不要认为您需要 SimpleTest,因为这是一个自动设置。

以上是关于CodeIgniter 和 SimpleTest——如何进行我的第一个测试?的主要内容,如果未能解决你的问题,请参考以下文章

Simpletest PHP 脚本浏览器...如何测试提交表单名称中包含 [ ] 的表单(基本上是数组格式)?

如何使用正则表达式在SimpleTest中编写AssertTags测试?

如何通过 Python 和 ctype 访问 C 全局变量结构

模拟测试和PHP的魔法__get方法

gradle-TestNG配置

在非 Codeigniter 类中加载和使用 Codeigniter 模型