0

我是 PHP 单元测试和单元测试的新手。我正在使用 PHP 5.3.8 和 PHPUnit 3.7.18。我有一个简单的数学课和数学测试课:

数学.php

<?php

class Math {

    protected $val1;
    protected $val2;

    public function set_values($val1, $val2) {
        $this -> val1 = $val1;
        $this -> val2 = $val2;
    }

    public function get_values() {
        return $this -> $val1;
        return $this -> $val2;
    }

    public function add_values() {
        $this -> val1 + $this -> val2 = 5;
        return 5;
    }
}

?>

Math_Test.php

<?php

require_once 'PHPUnit/Autoload.php';
require_once 'Math.php';

class Math_Test extends PHPUnit_Framework_TestCase {

    protected $value1;
    protected $value2;

    public function test_add() {

        $math = new Math();

        $expected = 7;
        $actual = $math -> add_values();
        $this -> assertEquals($expected, $actual);

    }

    protected function set_up() {
        $this -> math = new Math();
        $this -> math -> setValues(2, 3);
    }

    protected function tear_down() {
        unset($this -> value1);
        unset($this -> value2);
    }
}

?>

起初我很挣扎,因为我的xampp安装中有旧版本的 PHPUnit。我经历并升级了 PEAR 和 PHPUnit,并且能够使上述测试正常工作。

令我困惑的是,我可以在命令行中运行这个测试并获得预期的结果。但我希望我也可以在浏览器中运行它,这样我就可以以这种方式查看结果。

使用相同的安装,我可以在我的浏览器中很好地运行这个类似的测试(这来自评论部分..xampp\php\PEAR\PHPUnit.php):

<?php

require_once 'PHPUnit.php';

class MathTest extends PHPUnit_TestCase {
    var $fValue1;
    var $fValue2;

    function MathTest($name) {
      $this->PHPUnit_TestCase($name);
    }

    function setUp() {
      $this->fValue1 = 2;
      $this->fValue2 = 3;
    }

    function testAdd() {
      $this->assertTrue($this->fValue1 + $this->fValue2 == 5);
    }
}

$suite = new PHPUnit_TestSuite();
$suite->addTest(new MathTest('testAdd'));

$result = PHPUnit::run($suite);
print $result->toHTML();

?>

注意使用较新的Auotloader.phpvsPHPUnit.phpPHPUnit_TestCasevs PHPUnit_Framework_TestCase。也许这些版本在我的系统上混合在一起并造成了麻烦?

如何在浏览器中运行较新版本的测试(第一个测试)?我希望我使用测试套件和结果类在 HTML 中运行和显示。我尝试了变化无济于事。

我尝试在第二次测试中设置打印到浏览器部分,第一次测试并收到此错误:

Fatal error: Class 'PHPUnit' not found in...

我确认了 PHPUnit 和我的include_path一切似乎都在工作。另外,测试在终端中运行良好......

我已经安装了 VisualPHPUnit,这个工具非常适合那些想在浏览器中查看可视化测试的人。如果我能解决这个问题,我可能会将我的注意力转移到让 VisualPHPUnit 为我工作。

我学到了很多写作和编辑这个问题。感谢您的反馈。

4

1 回答 1

0

我认为该toHTML()方法不是较新版本的 PHPUnit 的一部分。我搜索了我使用的 PHPUnit 存储库,似乎没有此函数的实例。我在想,也许它因为某种原因被取消了。

如果我错了,请纠正我,因为那肯定会回答这个问题。

我对在终端中运行 PHPUnit 并使用VisualPHPUnit感到满意。

于 2013-03-28T17:13:23.087 回答