合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 错误相关信息的输出 当有测试失败时,PHPUnit 全力提供尽可能多的有助于找出问题所在的上下文信息。 **Example 2.17. 数组比较失败时生成的错误相关信息输出** ~~~ <?php class ArrayDiffTest extends PHPUnit_Framework_TestCase { public function testEquality() { $this->assertEquals( array(1,2,3 ,4,5,6), array(1,2,33,4,5,6) ); } } ?> ~~~ ~~~ phpunit ArrayDiffTest PHPUnit 5.0.0 by Sebastian Bergmann and contributors. F Time: 0 seconds, Memory: 5.25Mb There was 1 failure: 1) ArrayDiffTest::testEquality Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( 0 => 1 1 => 2 - 2 => 3 + 2 => 33 3 => 4 4 => 5 5 => 6 ) /home/sb/ArrayDiffTest.php:7 FAILURES! Tests: 1, Assertions: 1, Failures: 1. ~~~ 在这个例子中,数组中只有一个值不同,但其他值也都同时显示出来,以提供关于错误发生的位置的上下文信息。 当生成的输出很长而难以阅读时,PHPUnit 将对其进行分割,并在每个差异附近提供少数几行上下文信息。 **Example 2.18. 长数组比较失败时生成的错误相关信息输出** ~~~ <?php class LongArrayDiffTest extends PHPUnit_Framework_TestCase { public function testEquality() { $this->assertEquals( array(0,0,0,0,0,0,0,0,0,0,0,0,1,2,3 ,4,5,6), array(0,0,0,0,0,0,0,0,0,0,0,0,1,2,33,4,5,6) ); } } ?> ~~~ ~~~ phpunit LongArrayDiffTest PHPUnit 5.0.0 by Sebastian Bergmann and contributors. F Time: 0 seconds, Memory: 5.25Mb There was 1 failure: 1) LongArrayDiffTest::testEquality Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ 13 => 2 - 14 => 3 + 14 => 33 15 => 4 16 => 5 17 => 6 ) /home/sb/LongArrayDiffTest.php:7 FAILURES! Tests: 1, Assertions: 1, Failures: 1. ~~~ ## 边缘情况 当比较失败时,PHPUnit 为输入值建立文本表示,然后以此进行对比。这种实现导致在差异指示中显示出来的问题可能比实际上存在的多。 这种情况只出现在对数组或者对象使用 assertEquals 或其他“弱”比较函数时。 **Example 2.19. 当使用弱比较时在生成的差异结果中出现的边缘情况** ~~~ <?php class ArrayWeakComparisonTest extends PHPUnit_Framework_TestCase { public function testEquality() { $this->assertEquals( array(1 ,2,3 ,4,5,6), array('1',2,33,4,5,6) ); } } ?> ~~~ ~~~ phpunit ArrayWeakComparisonTest PHPUnit 5.0.0 by Sebastian Bergmann and contributors. F Time: 0 seconds, Memory: 5.25Mb There was 1 failure: 1) ArrayWeakComparisonTest::testEquality Failed asserting that two arrays are equal. --- Expected +++ Actual @@ @@ Array ( - 0 => 1 + 0 => '1' 1 => 2 - 2 => 3 + 2 => 33 3 => 4 4 => 5 5 => 6 ) /home/sb/ArrayWeakComparisonTest.php:7 FAILURES! Tests: 1, Assertions: 1, Failures: 1. ~~~ 在这个例子中,第一个索引项中的 `1` and `'1'` 在报告中被视为不同,虽然 assertEquals 认为这两个值是匹配的。