2

我在尝试使用SimpleTest for PHP运行一些简单测试时遇到错误。

目前,我正在根据文档扩展 UnitTestCase 类。我正在尝试在一个方法中测试我的课程的不同方面。这是我的课:

<?php
class SimpleClass extends UnitTestCase {

    public function __construct() {
        $this->test();
    }

    private function test() {
        $x = true;
        $this->assertTrue($x, 'x is true');
    }
}

我尝试扩展 TestSuite 类并使用文档中的语法,但我得到了同样的错误:

Fatal error: Call to a member function getDumper() on a non-object in /simpletest/test_case.php on line 316

关于如何做到这一点的任何想法,或者我是否错误地接近课堂测试?

4

1 回答 1

7

不要在测试中使用构造函数!

SimpleTest 允许您使用方法创建类。如果他们的名字以“test”开头,它会被自动识别为一种测试方法,如果你启动测试套件就会被调用。

您创建了一个构造函数来调用您的测试方法,并在没有进行所有设置的情况下进行断言,因此 SimpleTest 没有将其测试结果包装成漂亮输出所需的报告器类。

仔细阅读本教程,您会发现一些关于如何设置测试套件或如何开始单个测试的提示:

假设我们在 classes/log.php 中测试一个名为 Log 的简单文件日志记录类。我们首先创建一个测试脚本,我们将其称为 tests/log_test.php 并按如下方式填充它...

改编自文档的代码示例:

<?php
require_once('simpletest/autorun.php');
require_once('../classes/log.php');

class TestOfLogging extends UnitTestCase {
    function testLogCreatesNewFileOnFirstMessage() {
        $this->assertTrue(true);
    }
}
?>

请注意,没有构造函数,如果使用 PHP 执行此文件,自动运行文件将负责运行测试。

于 2013-10-21T19:41:57.983 回答