嗨,我正在使用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中缺少的功能。

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

最佳答案

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

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

上面的操作将失败,因为testxzxzxzxzxztest不等于输出test

09-09 23:48