我是PHP的单元测试和单元测试的新手。我正在使用PHP 5.3.8和PHPUnit 3.7.18。我有一个简单的数学课和数学测试课:
Math.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.php
vs PHPUnit.php
和PHPUnit_TestCase
vs PHPUnit_Framework_TestCase
。也许这些版本在我的系统上混合并造成麻烦?
如何在浏览器中运行较新的版本测试(第一次测试)?我希望我使用测试套件和结果类来运行和显示HTML。我试过变化无济于事。
我尝试像第二次测试一样设置打印到浏览器部分,进行第一次测试并得到此错误:
Fatal error: Class 'PHPUnit' not found in...
我确认了PHPUnit和我的include_path
,一切似乎都有效。此外,测试在终端运行良好......
我已经安装了VisualPHPUnit,这个工具非常适合想要在浏览器中看到可视化测试的人。如果我能解决这个问题,我可能会把注意力转移到使VisualPHPUnit为我工作。
我学到了很多写作和编辑这个问题的知识。感谢您的反馈。
答案 0 :(得分:0)
我认为toHTML()
方法不是较新版本的PHPUnit的一部分。我搜索了我使用的PHPUnit存储库,似乎没有这个函数的实例。我想也许是因为某些原因而被废除了。
如果我错了,请纠正我,因为这肯定会回答这个问题。
我很满意在终端中运行PHPUnit并使用VisualPHPUnit。