当两个变量 $expected$actual 不相等时报告错误,错误讯息由 $message 指定。

assertNotEquals() 是与之相反的断言,接受相同的参数。

assertAttributeEquals()assertAttributeNotEquals() 是便捷包装(convenience wrapper),以某个类或对象的某个 publicprotectedprivate 属性作为实际值来进行比较。


例 A.16: assertEquals() 的用法

  1. PHPUnit 6.5.0 by Sebastian Bergmann and contributors.
  2.  
  3. FFF
  4.  
  5. Time: 0 seconds, Memory: 5.25Mb
  6.  
  7. There were 3 failures:
  8.  
  9. 1) EqualsTest::testFailure
  10. Failed asserting that 0 matches expected 1.
  11.  
  12. /home/sb/EqualsTest.php:6
  13.  
  14. 2) EqualsTest::testFailure2
  15. Failed asserting that two strings are equal.
  16. --- Expected
  17. +++ Actual
  18. @@ @@
  19. -'bar'
  20. +'baz'
  21.  
  22. /home/sb/EqualsTest.php:11
  23.  
  24. 3) EqualsTest::testFailure3
  25. Failed asserting that two strings are equal.
  26. --- Expected
  27. +++ Actual
  28. @@ @@
  29. 'foo
  30. -bar
  31. +bah
  32. baz
  33. '
  34.  
  35. /home/sb/EqualsTest.php:16
  36.  
  37. FAILURES!
  38. Tests: 3, Assertions: 3, Failures: 3.

如果 和 $actual 是某些特定的类型,将使用更加专门的比较方式,参阅下文。

当两个浮点数 $expected$actual 之间的差值(的绝对值)大于 $delta 时报告错误,错误讯息由 $message 指定。

关于为什么 $delta 参数是必须的,请阅读《关于浮点运算,每一位计算机科学从业人员都应该知道的事实》。


例 A.17: 将assertEquals()用于浮点数时的用法

  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3.  
  4. class EqualsTest extends TestCase
  5. {
  6. {
  7. $this->assertEquals(1.0, 1.1, '', 0.2);
  8. }
  9.  
  10. public function testFailure()
  11. {
  12. $this->assertEquals(1.0, 1.1);
  13. }
  14. }
  15. ?>

assertEquals(DOMDocument $expected, DOMDocument $actual[, string $message = ''])

$expected$actual 这两个 DOMDocument 对象所表示的 XML 文档对应的无注释规范形式不相同时报告错误,错误讯息由 指定。

  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3.  
  4. class EqualsTest extends TestCase
  5. {
  6. public function testFailure()
  7. {
  8. $expected = new DOMDocument;
  9. $expected->loadXML('<foo><bar/></foo>');
  10.  
  11. $actual = new DOMDocument;
  12. $actual->loadXML('<bar><foo/></bar>');
  13.  
  14. $this->assertEquals($expected, $actual);
  15. }
  16. }
  17. ?>
  1. phpunit EqualsTest
  2. PHPUnit 6.5.0 by Sebastian Bergmann and contributors.
  3.  
  4. F
  5.  
  6. Time: 0 seconds, Memory: 5.00Mb
  7.  
  8. There was 1 failure:
  9.  
  10. 1) EqualsTest::testFailure
  11. Failed asserting that two DOM documents are equal.
  12. --- Expected
  13. +++ Actual
  14. @@ @@
  15. <?xml version="1.0"?>
  16. -<foo>
  17. -</foo>
  18. +<bar>
  19. + <foo/>
  20. +</bar>
  21.  
  22. /home/sb/EqualsTest.php:12
  23.  
  24. FAILURES!
  25. Tests: 1, Assertions: 1, Failures: 1.

assertEquals(object $expected, object $actual[, string $message = ''])

$expected$actual 这两个对象的属性值不相等时报告错误,错误讯息由 $message 指定。


例 A.19: assertEquals()应用于对象时的用法

  1. phpunit EqualsTest
  2. PHPUnit 6.5.0 by Sebastian Bergmann and contributors.
  3.  
  4. F
  5.  
  6. Time: 0 seconds, Memory: 5.25Mb
  7.  
  8. There was 1 failure:
  9.  
  10. 1) EqualsTest::testFailure
  11. Failed asserting that two objects are equal.
  12. --- Expected
  13. +++ Actual
  14. @@ @@
  15. stdClass Object (
  16. - 'foo' => 'foo'
  17. - 'bar' => 'bar'
  18. + 'foo' => 'bar'
  19. + 'baz' => 'bar'
  20. )
  21.  
  22. /home/sb/EqualsTest.php:14
  23.  
  24. FAILURES!
  25. Tests: 1, Assertions: 1, Failures: 1.

assertEquals(array $expected, array $actual[, string $message = ''])

$expected$actual 这两个数组不相等时报告错误,错误讯息由 $message 指定。

  1. <?php
  2. use PHPUnit\Framework\TestCase;
  3.  
  4. class EqualsTest extends TestCase
  5. {
  6. public function testFailure()
  7. {
  8. $this->assertEquals(['a', 'b', 'c'], ['a', 'c', 'd']);
  9. }
  10. ?>