PHPUnit中的expectOutputString或expectOutputRegex

时间:2011-12-20 02:57:37

标签: testing phpunit

您好我正在使用PHPUnit进行单元测试

我在使用expectOutputString / expectOutputRegex方法测试输出时遇到问题

问题:

function test_myTest() {
    $this->expectOutputString('testxzxzxzxzxz');
    $this->expectOutputString('test');
    echo 'test';
}

当我生成单元测试报告时,此测试通过即使 第一次期望失败

与assert方法不同,如果有一个失败的断言

,则测试失败

示例assertTrue:

// this test fail because the first assertTrue fails
function test_myAssert() {
  $this->assertTrue(false);
  $this->assertTrue(true);
}

看起来这是PHPUnit中缺少的功能..

任何人在测试输出时都有想法或替代方法来实现我想要的东西吗?

1 个答案:

答案 0 :(得分:7)

expectOutputString存储给定的字符串以与整个测试的输出进行比较,但它会覆盖以前存储的任何字符串。换句话说,只有对expectOutputString的最后一次调用才有效。您必须构建完整的输出字符串并仅调用expectOutputString一次。

function test_myTest() {
    $this->expectOutputString('testxzxzxzxzxz' . 'test');
    echo 'test';
}

上述操作会失败,因为testxzxzxzxzxztest不等于输出test