• PHPUnit-附录 A. 断言 (assert)


    【http://www.phpunit.cn/manual/5.7/zh_cn/appendixes.assertions.html】

    本附录列举可用的各种断言方法。

    assertArrayHasKey()

    assertArrayHasKey(mixed $key, array $array[, string $message = ''])

    $array 不包含 $key 时报告错误,错误讯息由 $message 指定。

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

    例 A.1: assertArrayHasKey() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ArrayHasKeyTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertArrayHasKey('foo', ['bar' => 'baz']);
        }
    }
    ?>
    phpunit ArrayHasKeyTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) ArrayHasKeyTest::testFailure
    Failed asserting that an array has the key 'foo'.
    
    /home/sb/ArrayHasKeyTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertClassHasAttribute()

    assertClassHasAttribute(string $attributeName, string $className[, string $message = ''])

    $className::attributeName 不存在时报告错误,错误讯息由 $message 指定。

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

    例 A.2: assertClassHasAttribute() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ClassHasAttributeTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertClassHasAttribute('foo', stdClass::class);
        }
    }
    ?>
    phpunit ClassHasAttributeTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) ClassHasAttributeTest::testFailure
    Failed asserting that class "stdClass" has attribute "foo".
    
    /home/sb/ClassHasAttributeTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertArraySubset()

    assertArraySubset(array $subset, array $array[, bool $strict = '', string $message = ''])

    $array 不包含 $subset 时报告错误,错误讯息由 $message 指定。

    $strict 是一个标志,用于表明是否需要对数组中的对象进行全等判定。

    例 A.3: assertArraySubset() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ArraySubsetTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertArraySubset(['config' => ['key-a', 'key-b']], ['config' => ['key-a']]);
        }
    }
    ?>
    phpunit ArrayHasKeyTest
    PHPUnit 4.4.0 by Sebastian Bergmann.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) EpilogEpilogTest::testNoFollowOption
    Failed asserting that an array has the subset Array &0 (
        'config' => Array &1 (
            0 => 'key-a'
            1 => 'key-b'
        )
    ).
    
    /home/sb/ArraySubsetTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertClassHasStaticAttribute()

    assertClassHasStaticAttribute(string $attributeName, string $className[, string $message = ''])

    $className::attributeName 不存在时报告错误,错误讯息由 $message 指定。

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

    例 A.4: assertClassHasStaticAttribute() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ClassHasStaticAttributeTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertClassHasStaticAttribute('foo', stdClass::class);
        }
    }
    ?>
    phpunit ClassHasStaticAttributeTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) ClassHasStaticAttributeTest::testFailure
    Failed asserting that class "stdClass" has static attribute "foo".
    
    /home/sb/ClassHasStaticAttributeTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertContains()

    assertContains(mixed $needle, Iterator|array $haystack[, string $message = ''])

    $needle 不是 $haystack的元素时报告错误,错误讯息由 $message 指定。

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

    assertAttributeContains()assertAttributeNotContains() 是便捷包装(convenience wrapper),以某个类或对象的 publicprotectedprivate 属性为搜索范围。

    例 A.5: assertContains() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ContainsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertContains(4, [1, 2, 3]);
        }
    }
    ?>
    phpunit ContainsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) ContainsTest::testFailure
    Failed asserting that an array contains 4.
    
    /home/sb/ContainsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertContains(string $needle, string $haystack[, string $message = '', boolean $ignoreCase = false])

    $needle 不是 $haystack 的子字符串时报告错误,错误讯息由 $message 指定。

    如果 $ignoreCasetrue,测试将按大小写不敏感的方式进行。

    例 A.6: assertContains() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ContainsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertContains('baz', 'foobar');
        }
    }
    ?>
    phpunit ContainsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) ContainsTest::testFailure
    Failed asserting that 'foobar' contains "baz".
    
    /home/sb/ContainsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    例 A.7: 带有 $ignoreCase 参数的 assertContains() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ContainsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertContains('foo', 'FooBar');
        }
    
        public function testOK()
        {
            $this->assertContains('foo', 'FooBar', '', true);
        }
    }
    ?>
    phpunit ContainsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F.
    
    Time: 0 seconds, Memory: 2.75Mb
    
    There was 1 failure:
    
    1) ContainsTest::testFailure
    Failed asserting that 'FooBar' contains "foo".
    
    /home/sb/ContainsTest.php:6
    
    FAILURES!
    Tests: 2, Assertions: 2, Failures: 1.


    assertContainsOnly()

    assertContainsOnly(string $type, Iterator|array $haystack[, boolean $isNativeType = null, string $message = ''])

    $haystack 并非仅包含类型为 $type 的变量时报告错误,错误讯息由 $message 指定。

    $isNativeType 是一个标志,用来表明 $type 是否是原生 PHP 类型。

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

    assertAttributeContainsOnly()assertAttributeNotContainsOnly() 是便捷包装(convenience wrapper),以某个类或对象的 publicprotectedprivate 属性为搜索范围。

    例 A.8: assertContainsOnly() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ContainsOnlyTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertContainsOnly('string', ['1', '2', 3]);
        }
    }
    ?>
    phpunit ContainsOnlyTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) ContainsOnlyTest::testFailure
    Failed asserting that Array (
        0 => '1'
        1 => '2'
        2 => 3
    ) contains only values of type "string".
    
    /home/sb/ContainsOnlyTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertContainsOnlyInstancesOf()

    assertContainsOnlyInstancesOf(string $classname, Traversable|array $haystack[, string $message = ''])

    $haystack 并非仅包含类 $classname 的实例时报告错误,错误讯息由 $message 指定。

    例 A.9: assertContainsOnlyInstancesOf() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ContainsOnlyInstancesOfTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertContainsOnlyInstancesOf(
                Foo::class,
                [new Foo, new Bar, new Foo]
            );
        }
    }
    ?>
    phpunit ContainsOnlyInstancesOfTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) ContainsOnlyInstancesOfTest::testFailure
    Failed asserting that Array ([0]=> Bar Object(...)) is an instance of class "Foo".
    
    /home/sb/ContainsOnlyInstancesOfTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertCount()

    assertCount($expectedCount, $haystack[, string $message = ''])

    $haystack 中的元素数量不是 $expectedCount 时报告错误,错误讯息由 $message 指定。

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

    例 A.10: assertCount() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class CountTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertCount(0, ['foo']);
        }
    }
    ?>
    phpunit CountTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) CountTest::testFailure
    Failed asserting that actual size 1 matches expected size 0.
    
    /home/sb/CountTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertDirectoryExists()

    assertDirectoryExists(string $directory[, string $message = ''])

    $directory 所指定的目录不存在时报告错误,错误讯息由 $message 指定。

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

    例 A.11: assertDirectoryExists() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class DirectoryExistsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertDirectoryExists('/path/to/directory');
        }
    }
    ?>
    phpunit DirectoryExistsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) DirectoryExistsTest::testFailure
    Failed asserting that directory "/path/to/directory" exists.
    
    /home/sb/DirectoryExistsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertDirectoryIsReadable()

    assertDirectoryIsReadable(string $directory[, string $message = ''])

    $directory 所指定的目录不是个目录或不可读时报告错误,错误讯息由 $message 指定。

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

    例 A.12: assertDirectoryIsReadable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class DirectoryIsReadableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertDirectoryIsReadable('/path/to/directory');
        }
    }
    ?>
    phpunit DirectoryIsReadableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) DirectoryIsReadableTest::testFailure
    Failed asserting that "/path/to/directory" is readable.
    
    /home/sb/DirectoryIsReadableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertDirectoryIsWritable()

    assertDirectoryIsWritable(string $directory[, string $message = ''])

    $directory 所指定的目录不是个目录或不可写时报告错误,错误讯息由 $message 指定。

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

    例 A.13: assertDirectoryIsWritable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class DirectoryIsWritableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertDirectoryIsWritable('/path/to/directory');
        }
    }
    ?>
    phpunit DirectoryIsWritableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) DirectoryIsWritableTest::testFailure
    Failed asserting that "/path/to/directory" is writable.
    
    /home/sb/DirectoryIsWritableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertEmpty()

    assertEmpty(mixed $actual[, string $message = ''])

    $actual 非空时报告错误,错误讯息由 $message 指定。

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

    assertAttributeEmpty()assertAttributeNotEmpty() 是便捷包装(convenience wrapper),可以应用于某个类或对象的某个 publicprotectedprivate 属性。

    例 A.14: assertEmpty() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EmptyTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertEmpty(['foo']);
        }
    }
    ?>
    phpunit EmptyTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) EmptyTest::testFailure
    Failed asserting that an array is empty.
    
    /home/sb/EmptyTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertEqualXMLStructure()

    assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement[, boolean $checkAttributes = false, string $message = ''])

    $actualElement 中 DOMElement 的 XML 结构与 $expectedElement 中 DOMElement的 XML 结构不相同时报告错误,错误讯息由 $message 指定。

    例 A.15: assertEqualXMLStructure() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualXMLStructureTest extends TestCase
    {
        public function testFailureWithDifferentNodeNames()
        {
            $expected = new DOMElement('foo');
            $actual = new DOMElement('bar');
    
            $this->assertEqualXMLStructure($expected, $actual);
        }
    
        public function testFailureWithDifferentNodeAttributes()
        {
            $expected = new DOMDocument;
            $expected->loadXML('<foo bar="true" />');
    
            $actual = new DOMDocument;
            $actual->loadXML('<foo/>');
    
            $this->assertEqualXMLStructure(
              $expected->firstChild, $actual->firstChild, true
            );
        }
    
        public function testFailureWithDifferentChildrenCount()
        {
            $expected = new DOMDocument;
            $expected->loadXML('<foo><bar/><bar/><bar/></foo>');
    
            $actual = new DOMDocument;
            $actual->loadXML('<foo><bar/></foo>');
    
            $this->assertEqualXMLStructure(
              $expected->firstChild, $actual->firstChild
            );
        }
    
        public function testFailureWithDifferentChildren()
        {
            $expected = new DOMDocument;
            $expected->loadXML('<foo><bar/><bar/><bar/></foo>');
    
            $actual = new DOMDocument;
            $actual->loadXML('<foo><baz/><baz/><baz/></foo>');
    
            $this->assertEqualXMLStructure(
              $expected->firstChild, $actual->firstChild
            );
        }
    }
    ?>
    phpunit EqualXMLStructureTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    FFFF
    
    Time: 0 seconds, Memory: 5.75Mb
    
    There were 4 failures:
    
    1) EqualXMLStructureTest::testFailureWithDifferentNodeNames
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'foo'
    +'bar'
    
    /home/sb/EqualXMLStructureTest.php:9
    
    2) EqualXMLStructureTest::testFailureWithDifferentNodeAttributes
    Number of attributes on node "foo" does not match
    Failed asserting that 0 matches expected 1.
    
    /home/sb/EqualXMLStructureTest.php:22
    
    3) EqualXMLStructureTest::testFailureWithDifferentChildrenCount
    Number of child nodes of "foo" differs
    Failed asserting that 1 matches expected 3.
    
    /home/sb/EqualXMLStructureTest.php:35
    
    4) EqualXMLStructureTest::testFailureWithDifferentChildren
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'bar'
    +'baz'
    
    /home/sb/EqualXMLStructureTest.php:48
    
    FAILURES!
    Tests: 4, Assertions: 8, Failures: 4.


    assertEquals()

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

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

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

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

    例 A.16: assertEquals() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertEquals(1, 0);
        }
    
        public function testFailure2()
        {
            $this->assertEquals('bar', 'baz');
        }
    
        public function testFailure3()
        {
            $this->assertEquals("foo
    bar
    baz
    ", "foo
    bah
    baz
    ");
        }
    }
    ?>
    phpunit EqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    FFF
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There were 3 failures:
    
    1) EqualsTest::testFailure
    Failed asserting that 0 matches expected 1.
    
    /home/sb/EqualsTest.php:6
    
    2) EqualsTest::testFailure2
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'bar'
    +'baz'
    
    /home/sb/EqualsTest.php:11
    
    3) EqualsTest::testFailure3
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
     'foo
    -bar
    +bah
     baz
     '
    
    /home/sb/EqualsTest.php:16
    
    FAILURES!
    Tests: 3, Assertions: 3, Failures: 3.


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

    assertEquals(float $expected, float $actual[, string $message = '', float $delta = 0])

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

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

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

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualsTest extends TestCase
    {
        public function testSuccess()
        {
            $this->assertEquals(1.0, 1.1, '', 0.2);
        }
    
        public function testFailure()
        {
            $this->assertEquals(1.0, 1.1);
        }
    }
    ?>
    phpunit EqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    .F
    
    Time: 0 seconds, Memory: 5.75Mb
    
    There was 1 failure:
    
    1) EqualsTest::testFailure
    Failed asserting that 1.1 matches expected 1.0.
    
    /home/sb/EqualsTest.php:11
    
    FAILURES!
    Tests: 2, Assertions: 2, Failures: 1.


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

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

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

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualsTest extends TestCase
    {
        public function testFailure()
        {
            $expected = new DOMDocument;
            $expected->loadXML('<foo><bar/></foo>');
    
            $actual = new DOMDocument;
            $actual->loadXML('<bar><foo/></bar>');
    
            $this->assertEquals($expected, $actual);
        }
    }
    ?>
    phpunit EqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) EqualsTest::testFailure
    Failed asserting that two DOM documents are equal.
    --- Expected
    +++ Actual
    @@ @@
     <?xml version="1.0"?>
    -<foo>
    -  <bar/>
    -</foo>
    +<bar>
    +  <foo/>
    +</bar>
    
    /home/sb/EqualsTest.php:12
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


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

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

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

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualsTest extends TestCase
    {
        public function testFailure()
        {
            $expected = new stdClass;
            $expected->foo = 'foo';
            $expected->bar = 'bar';
    
            $actual = new stdClass;
            $actual->foo = 'bar';
            $actual->baz = 'bar';
    
            $this->assertEquals($expected, $actual);
        }
    }
    ?>
    phpunit EqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) EqualsTest::testFailure
    Failed asserting that two objects are equal.
    --- Expected
    +++ Actual
    @@ @@
     stdClass Object (
    -    'foo' => 'foo'
    -    'bar' => 'bar'
    +    'foo' => 'bar'
    +    'baz' => 'bar'
     )
    
    /home/sb/EqualsTest.php:14
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


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

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

    例 A.20: assertEquals() 应用于数组时的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class EqualsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertEquals(['a', 'b', 'c'], ['a', 'c', 'd']);
        }
    }
    ?>
    phpunit EqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) EqualsTest::testFailure
    Failed asserting that two arrays are equal.
    --- Expected
    +++ Actual
    @@ @@
     Array (
         0 => 'a'
    -    1 => 'b'
    -    2 => 'c'
    +    1 => 'c'
    +    2 => 'd'
     )
    
    /home/sb/EqualsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertFalse()

    assertFalse(bool $condition[, string $message = ''])

    $conditiontrue 时报告错误,错误讯息由 $message 指定。

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

    例 A.21: assertFalse() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class FalseTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertFalse(true);
        }
    }
    ?>
    phpunit FalseTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) FalseTest::testFailure
    Failed asserting that true is false.
    
    /home/sb/FalseTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertFileEquals()

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

    $expected 所指定的文件与 $actual 所指定的文件内容不同时报告错误,错误讯息由 $message 指定。

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

    例 A.22: assertFileEquals() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class FileEqualsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertFileEquals('/home/sb/expected', '/home/sb/actual');
        }
    }
    ?>
    phpunit FileEqualsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) FileEqualsTest::testFailure
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'expected
    +'actual
     '
    
    /home/sb/FileEqualsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 3, Failures: 1.


    assertFileExists()

    assertFileExists(string $filename[, string $message = ''])

    $filename 所指定的文件不存在时报告错误,错误讯息由 $message 指定。

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

    例 A.23: assertFileExists() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class FileExistsTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertFileExists('/path/to/file');
        }
    }
    ?>
    phpunit FileExistsTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) FileExistsTest::testFailure
    Failed asserting that file "/path/to/file" exists.
    
    /home/sb/FileExistsTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertFileIsReadable()

    assertFileIsReadable(string $filename[, string $message = ''])

    $filename 所指定的文件不是个文件或不可读时报告错误,错误讯息由 $message 指定。

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

    例 A.24: assertFileIsReadable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class FileIsReadableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertFileIsReadable('/path/to/file');
        }
    }
    ?>
    phpunit FileIsReadableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) FileIsReadableTest::testFailure
    Failed asserting that "/path/to/file" is readable.
    
    /home/sb/FileIsReadableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertFileIsWritable()

    assertFileIsWritable(string $filename[, string $message = ''])

    $filename 所指定的文件不是个文件或不可写时报告错误,错误讯息由 $message 指定。

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

    例 A.25: assertFileIsWritable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class FileIsWritableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertFileIsWritable('/path/to/file');
        }
    }
    ?>
    phpunit FileIsWritableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) FileIsWritableTest::testFailure
    Failed asserting that "/path/to/file" is writable.
    
    /home/sb/FileIsWritableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertGreaterThan()

    assertGreaterThan(mixed $expected, mixed $actual[, string $message = ''])

    $actual 的值不大于 $expected 的值时报告错误,错误讯息由 $message 指定。

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

    例 A.26: assertGreaterThan() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class GreaterThanTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertGreaterThan(2, 1);
        }
    }
    ?>
    phpunit GreaterThanTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) GreaterThanTest::testFailure
    Failed asserting that 1 is greater than 2.
    
    /home/sb/GreaterThanTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertGreaterThanOrEqual()

    assertGreaterThanOrEqual(mixed $expected, mixed $actual[, string $message = ''])

    $actual 的值不大于且不等于 $expected 的值时报告错误,错误讯息由 $message 指定。

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

    例 A.27: assertGreaterThanOrEqual() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class GreatThanOrEqualTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertGreaterThanOrEqual(2, 1);
        }
    }
    ?>
    phpunit GreaterThanOrEqualTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) GreatThanOrEqualTest::testFailure
    Failed asserting that 1 is equal to 2 or is greater than 2.
    
    /home/sb/GreaterThanOrEqualTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 2, Failures: 1.


    assertInfinite()

    assertInfinite(mixed $variable[, string $message = ''])

    $actual 不是 INF 时报告错误,错误讯息由 $message 指定。

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

    例 A.28: assertInfinite() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class InfiniteTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertInfinite(1);
        }
    }
    ?>
    phpunit InfiniteTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) InfiniteTest::testFailure
    Failed asserting that 1 is infinite.
    
    /home/sb/InfiniteTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertInstanceOf()

    assertInstanceOf($expected, $actual[, $message = ''])

    $actual 不是 $expected 的实例时报告错误,错误讯息由 $message 指定。

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

    assertAttributeInstanceOf()assertAttributeNotInstanceOf() 是便捷包装(convenience wrapper),可以应用于某个类或对象的某个 publicprotectedprivate 属性。

    例 A.29: assertInstanceOf() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class InstanceOfTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertInstanceOf(RuntimeException::class, new Exception);
        }
    }
    ?>
    phpunit InstanceOfTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) InstanceOfTest::testFailure
    Failed asserting that Exception Object (...) is an instance of class "RuntimeException".
    
    /home/sb/InstanceOfTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertInternalType()

    assertInternalType($expected, $actual[, $message = ''])

    $actual 不是 $expected 所指明的类型时报告错误,错误讯息由 $message 指定。

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

    assertAttributeInternalType()assertAttributeNotInternalType() 是便捷包装(convenience wrapper),可以应用于某个类或对象的某个 publicprotectedprivate 属性。

    例 A.30: assertInternalType() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class InternalTypeTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertInternalType('string', 42);
        }
    }
    ?>
    phpunit InternalTypeTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) InternalTypeTest::testFailure
    Failed asserting that 42 is of type "string".
    
    /home/sb/InternalTypeTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertIsReadable()

    assertIsReadable(string $filename[, string $message = ''])

    $filename 所指定的文件或目录不可读时报告错误,错误讯息由 $message 指定。

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

    例 A.31: assertIsReadable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class IsReadableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertIsReadable('/path/to/unreadable');
        }
    }
    ?>
    phpunit IsReadableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) IsReadableTest::testFailure
    Failed asserting that "/path/to/unreadable" is readable.
    
    /home/sb/IsReadableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertIsWritable()

    assertIsWritable(string $filename[, string $message = ''])

    $filename 所指定的文件或目录不可写时报告错误,错误讯息由 $message 指定。

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

    例 A.32: assertIsWritable() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class IsWritableTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertIsWritable('/path/to/unwritable');
        }
    }
    ?>
    phpunit IsWritableTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) IsWritableTest::testFailure
    Failed asserting that "/path/to/unwritable" is writable.
    
    /home/sb/IsWritableTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertJsonFileEqualsJsonFile()

    assertJsonFileEqualsJsonFile(mixed $expectedFile, mixed $actualFile[, string $message = ''])

    $actualFile 对应的值与 $expectedFile 对应的值不匹配时报告错误,错误讯息由 $message 指定。

    例 A.33: assertJsonFileEqualsJsonFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class JsonFileEqualsJsonFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertJsonFileEqualsJsonFile(
              'path/to/fixture/file', 'path/to/actual/file');
        }
    }
    ?>
    phpunit JsonFileEqualsJsonFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) JsonFileEqualsJsonFile::testFailure
    Failed asserting that '{"Mascot":"Tux"}' matches JSON string "["Mascott", "Tux", "OS", "Linux"]".
    
    /home/sb/JsonFileEqualsJsonFileTest.php:5
    
    FAILURES!
    Tests: 1, Assertions: 3, Failures: 1.


    assertJsonStringEqualsJsonFile()

    assertJsonStringEqualsJsonFile(mixed $expectedFile, mixed $actualJson[, string $message = ''])

    $actualJson 对应的值与 $expectedFile 对应的值不匹配时报告错误,错误讯息由 $message 指定。

    例 A.34: assertJsonStringEqualsJsonFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class JsonStringEqualsJsonFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertJsonStringEqualsJsonFile(
                'path/to/fixture/file', json_encode(['Mascot' => 'ux'])
            );
        }
    }
    ?>
    phpunit JsonStringEqualsJsonFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) JsonStringEqualsJsonFile::testFailure
    Failed asserting that '{"Mascot":"ux"}' matches JSON string "{"Mascott":"Tux"}".
    
    /home/sb/JsonStringEqualsJsonFileTest.php:5
    
    FAILURES!
    Tests: 1, Assertions: 3, Failures: 1.


    assertJsonStringEqualsJsonString()

    assertJsonStringEqualsJsonString(mixed $expectedJson, mixed $actualJson[, string $message = ''])

    $actualJson 对应的值与 $expectedJson 对应的值不匹配时报告错误,错误讯息由 $message 指定。

    例 A.35: assertJsonStringEqualsJsonString() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class JsonStringEqualsJsonStringTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertJsonStringEqualsJsonString(
                json_encode(['Mascot' => 'Tux']),
                json_encode(['Mascot' => 'ux'])
            );
        }
    }
    ?>
    phpunit JsonStringEqualsJsonStringTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) JsonStringEqualsJsonStringTest::testFailure
    Failed asserting that two objects are equal.
    --- Expected
    +++ Actual
    @@ @@
     stdClass Object (
     -    'Mascot' => 'Tux'
     +    'Mascot' => 'ux'
    )
    
    /home/sb/JsonStringEqualsJsonStringTest.php:5
    
    FAILURES!
    Tests: 1, Assertions: 3, Failures: 1.


    assertLessThan()

    assertLessThan(mixed $expected, mixed $actual[, string $message = ''])

    $actual 的值不小于 $expected 的值时报告错误,错误讯息由 $message 指定。

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

    例 A.36: assertLessThan() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class LessThanTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertLessThan(1, 2);
        }
    }
    ?>
    phpunit LessThanTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) LessThanTest::testFailure
    Failed asserting that 2 is less than 1.
    
    /home/sb/LessThanTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertLessThanOrEqual()

    assertLessThanOrEqual(mixed $expected, mixed $actual[, string $message = ''])

    $actual 的值不小于且不等于 $expected 的值时报告错误,错误讯息由 $message 指定。

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

    例 A.37: assertLessThanOrEqual() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class LessThanOrEqualTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertLessThanOrEqual(1, 2);
        }
    }
    ?>
    phpunit LessThanOrEqualTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) LessThanOrEqualTest::testFailure
    Failed asserting that 2 is equal to 1 or is less than 1.
    
    /home/sb/LessThanOrEqualTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 2, Failures: 1.


    assertNan()

    assertNan(mixed $variable[, string $message = ''])

    $variable 不是 NAN 时报告错误,错误讯息由 $message 指定。

    例 A.38: assertNan() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class NanTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertNan(1);
        }
    }
    ?>
    phpunit NanTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) NanTest::testFailure
    Failed asserting that 1 is nan.
    
    /home/sb/NanTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertNull()

    assertNull(mixed $variable[, string $message = ''])

    $actual 不是 null 时报告错误,错误讯息由 $message 指定。

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

    例 A.39: assertNull() 的使用

    <?php
    use PHPUnitFrameworkTestCase;
    
    class NullTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertNull('foo');
        }
    }
    ?>
    phpunit NotNullTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) NullTest::testFailure
    Failed asserting that 'foo' is null.
    
    /home/sb/NotNullTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertObjectHasAttribute()

    assertObjectHasAttribute(string $attributeName, object $object[, string $message = ''])

    $object->attributeName 不存在时报告错误,错误讯息由 $message 指定。

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

    例 A.40: assertObjectHasAttribute() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class ObjectHasAttributeTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertObjectHasAttribute('foo', new stdClass);
        }
    }
    ?>
    phpunit ObjectHasAttributeTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) ObjectHasAttributeTest::testFailure
    Failed asserting that object of class "stdClass" has attribute "foo".
    
    /home/sb/ObjectHasAttributeTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertRegExp()

    assertRegExp(string $pattern, string $string[, string $message = ''])

    $string 不匹配于正则表达式 $pattern 时报告错误,错误讯息由 $message 指定。

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

    例 A.41: assertRegExp() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class RegExpTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertRegExp('/foo/', 'bar');
        }
    }
    ?>
    phpunit RegExpTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) RegExpTest::testFailure
    Failed asserting that 'bar' matches PCRE pattern "/foo/".
    
    /home/sb/RegExpTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertStringMatchesFormat()

    assertStringMatchesFormat(string $format, string $string[, string $message = ''])

    $string 不匹配于 $format 定义的格式时报告错误,错误讯息由 $message 指定。

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

    例 A.42: assertStringMatchesFormat() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class StringMatchesFormatTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertStringMatchesFormat('%i', 'foo');
        }
    }
    ?>
    phpunit StringMatchesFormatTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) StringMatchesFormatTest::testFailure
    Failed asserting that 'foo' matches PCRE pattern "/^[+-]?d+$/s".
    
    /home/sb/StringMatchesFormatTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    格式定义字符串中可以使用如下占位符:

    • %e:表示目录分隔符,例如在 Linux 系统中是 /

    • %s:一个或多个除了换行符以外的任意字符(非空白字符或者空白字符)。

    • %S:零个或多个除了换行符以外的任意字符(非空白字符或者空白字符)。

    • %a:一个或多个包括换行符在内的任意字符(非空白字符或者空白字符)。

    • %A:零个或多个包括换行符在内的任意字符(非空白字符或者空白字符)。

    • %w:零个或多个空白字符。

    • %i:带符号整数值,例如 +3142-3142

    • %d:无符号整数值,例如 123456

    • %x:一个或多个十六进制字符。所谓十六进制字符,指的是在以下范围内的字符:0-9a-fA-F

    • %f:浮点数,例如 3.142-3.1423.142E-103.142e+10

    • %c:单个任意字符。

    assertStringMatchesFormatFile()

    assertStringMatchesFormatFile(string $formatFile, string $string[, string $message = ''])

    $string 不匹配于 $formatFile 的内容所定义的格式时报告错误,错误讯息由 $message 指定。

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

    例 A.43: assertStringMatchesFormatFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class StringMatchesFormatFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertStringMatchesFormatFile('/path/to/expected.txt', 'foo');
        }
    }
    ?>
    phpunit StringMatchesFormatFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) StringMatchesFormatFileTest::testFailure
    Failed asserting that 'foo' matches PCRE pattern "/^[+-]?d+
    $/s".
    
    /home/sb/StringMatchesFormatFileTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 2, Failures: 1.


    assertSame()

    assertSame(mixed $expected, mixed $actual[, string $message = ''])

    当两个变量 $expected$actual 的值与类型不完全相同时报告错误,错误讯息由 $message 指定。

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

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

    例 A.44: assertSame() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class SameTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertSame('2204', 2204);
        }
    }
    ?>
    phpunit SameTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) SameTest::testFailure
    Failed asserting that 2204 is identical to '2204'.
    
    /home/sb/SameTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


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

    当两个变量 $expected$actual 不是指向同一个对象的引用时报告错误,错误讯息由 $message 指定。

    例 A.45: assertSame() 应用于对象时的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class SameTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertSame(new stdClass, new stdClass);
        }
    }
    ?>
    phpunit SameTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 4.75Mb
    
    There was 1 failure:
    
    1) SameTest::testFailure
    Failed asserting that two variables reference the same object.
    
    /home/sb/SameTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertStringEndsWith()

    assertStringEndsWith(string $suffix, string $string[, string $message = ''])

    $string 不以 $suffix 结尾时报告错误,错误讯息由 $message 指定。

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

    例 A.46: assertStringEndsWith() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class StringEndsWithTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertStringEndsWith('suffix', 'foo');
        }
    }
    ?>
    phpunit StringEndsWithTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 1 second, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) StringEndsWithTest::testFailure
    Failed asserting that 'foo' ends with "suffix".
    
    /home/sb/StringEndsWithTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertStringEqualsFile()

    assertStringEqualsFile(string $expectedFile, string $actualString[, string $message = ''])

    $expectedFile 所指定的文件其内容不是 $actualString 时报告错误,错误讯息由 $message 指定。

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

    例 A.47: assertStringEqualsFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class StringEqualsFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertStringEqualsFile('/home/sb/expected', 'actual');
        }
    }
    ?>
    phpunit StringEqualsFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) StringEqualsFileTest::testFailure
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -'expected
    -'
    +'actual'
    
    /home/sb/StringEqualsFileTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 2, Failures: 1.


    assertStringStartsWith()

    assertStringStartsWith(string $prefix, string $string[, string $message = ''])

    $string 不以 $prefix 开头时报告错误,错误讯息由 $message 指定。

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

    例 A.48: assertStringStartsWith() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class StringStartsWithTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertStringStartsWith('prefix', 'foo');
        }
    }
    ?>
    phpunit StringStartsWithTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) StringStartsWithTest::testFailure
    Failed asserting that 'foo' starts with "prefix".
    
    /home/sb/StringStartsWithTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertThat()

    可以用 PHPUnit_Framework_Constraint 类来订立更加复杂的断言。随后可以用 assertThat() 方法来评定这些断言。例 A.49 展示了如何用 logicalNot()equalTo() 约束条件来表达与 assertNotEquals() 等价的断言。

    assertThat(mixed $value, PHPUnit_Framework_Constraint $constraint[, $message = ''])

    $value 不符合约束条件 $constraint 时报告错误,错误讯息由 $message 指定。

    例 A.49: assertThat() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class BiscuitTest extends TestCase
    {
        public function testEquals()
        {
            $theBiscuit = new Biscuit('Ginger');
            $myBiscuit  = new Biscuit('Ginger');
    
            $this->assertThat(
              $theBiscuit,
              $this->logicalNot(
                $this->equalTo($myBiscuit)
              )
            );
        }
    }
    ?>


    表 A.1列举了所有可用的 PHPUnit_Framework_Constraint 类。

    表 A.1. 约束条件

    约束条件含义
    PHPUnit_Framework_Constraint_Attribute attribute(PHPUnit_Framework_Constraint $constraint, $attributeName) 此约束将另外一个约束应用于某个类或对象的某个属性。
    PHPUnit_Framework_Constraint_IsAnything anything() 此约束接受任意输入值。
    PHPUnit_Framework_Constraint_ArrayHasKey arrayHasKey(mixed $key) 此约束断言所评定的数组拥有指定键名。
    PHPUnit_Framework_Constraint_TraversableContains contains(mixed $value) 此约束断言所评定的 array 或实现了 Iterator 接口的对象包含有给定值。
    PHPUnit_Framework_Constraint_TraversableContainsOnly containsOnly(string $type) 此约束断言所评定的 array 或实现了 Iterator 接口的对象仅包含给定类型的值。
    PHPUnit_Framework_Constraint_TraversableContainsOnly containsOnlyInstancesOf(string $classname) 此约束断言所评定的 array 或实现了 Iterator 接口的对象仅包含给定类名的类的实例。
    PHPUnit_Framework_Constraint_IsEqual equalTo($value, $delta = 0, $maxDepth = 10) 此约束检验一个值是否等于另外一个。
    PHPUnit_Framework_Constraint_Attribute attributeEqualTo($attributeName, $value, $delta = 0, $maxDepth = 10) 此约束检验一个值是否等于某个类或对象的某个属性。
    PHPUnit_Framework_Constraint_DirectoryExists directoryExists() 此约束检验所评定的目录是否存在。
    PHPUnit_Framework_Constraint_FileExists fileExists() 此约束检验所评定的文件名对应的文件是否存在。
    PHPUnit_Framework_Constraint_IsReadable isReadable() 此约束检验所评定的文件名对应的文件是否可读。
    PHPUnit_Framework_Constraint_IsWritable isWritable() 此约束检验所评定的文件名对应的文件是否可写。
    PHPUnit_Framework_Constraint_GreaterThan greaterThan(mixed $value) 此约束断言所评定的值大于给定值。
    PHPUnit_Framework_Constraint_Or greaterThanOrEqual(mixed $value) 此约束断言所评定的值大于或等于给定值。
    PHPUnit_Framework_Constraint_ClassHasAttribute classHasAttribute(string $attributeName) 此约束断言所评定的类具有给定属性。
    PHPUnit_Framework_Constraint_ClassHasStaticAttribute classHasStaticAttribute(string $attributeName) 此约束断言所评定的类具有给定静态属性。
    PHPUnit_Framework_Constraint_ObjectHasAttribute hasAttribute(string $attributeName) 此约束断言所评定的对象具有给定属性。
    PHPUnit_Framework_Constraint_IsIdentical identicalTo(mixed $value) 此约束断言所评定的值与另外一个值全等。
    PHPUnit_Framework_Constraint_IsFalse isFalse() 此约束断言所评定的值为 false
    PHPUnit_Framework_Constraint_IsInstanceOf isInstanceOf(string $className) 此约束断言所评定的对象是给定类的实例。
    PHPUnit_Framework_Constraint_IsNull isNull() 此约束断言所评定的值为 null
    PHPUnit_Framework_Constraint_IsTrue isTrue() 此约束断言所评定的值为 true
    PHPUnit_Framework_Constraint_IsType isType(string $type) 此约束断言所评定的值是指定类型的。
    PHPUnit_Framework_Constraint_LessThan lessThan(mixed $value) 此约束断言所评定的值小于给定值。
    PHPUnit_Framework_Constraint_Or lessThanOrEqual(mixed $value) 此约束断言所评定的值小于或等于给定值。
    logicalAnd() 逻辑与(AND)。
    logicalNot(PHPUnit_Framework_Constraint $constraint) 逻辑非(NOT)。
    logicalOr() 逻辑或(OR)。
    logicalXor() 逻辑异或(XOR)。
    PHPUnit_Framework_Constraint_PCREMatch matchesRegularExpression(string $pattern) 此约束断言所评定的字符串匹配于正则表达式。
    PHPUnit_Framework_Constraint_StringContains stringContains(string $string, bool $case) 此约束断言所评定的字符串包含指定字符串。
    PHPUnit_Framework_Constraint_StringEndsWith stringEndsWith(string $suffix) 此约束断言所评定的字符串以给定后缀结尾。
    PHPUnit_Framework_Constraint_StringStartsWith stringStartsWith(string $prefix) 此约束断言所评定的字符串以给定前缀开头。


    assertTrue()

    assertTrue(bool $condition[, string $message = ''])

    $conditionfalse 时报告错误,错误讯息由 $message 指定。

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

    例 A.50: assertTrue() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class TrueTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertTrue(false);
        }
    }
    ?>
    phpunit TrueTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) TrueTest::testFailure
    Failed asserting that false is true.
    
    /home/sb/TrueTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.


    assertXmlFileEqualsXmlFile()

    assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile[, string $message = ''])

    $actualFile 对应的 XML 文档与 $expectedFile 对应的 XML 文档不相同时报告错误,错误讯息由 $message 指定。

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

    例 A.51: assertXmlFileEqualsXmlFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class XmlFileEqualsXmlFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertXmlFileEqualsXmlFile(
              '/home/sb/expected.xml', '/home/sb/actual.xml');
        }
    }
    ?>
    phpunit XmlFileEqualsXmlFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) XmlFileEqualsXmlFileTest::testFailure
    Failed asserting that two DOM documents are equal.
    --- Expected
    +++ Actual
    @@ @@
     <?xml version="1.0"?>
     <foo>
    -  <bar/>
    +  <baz/>
     </foo>
    
    /home/sb/XmlFileEqualsXmlFileTest.php:7
    
    FAILURES!
    Tests: 1, Assertions: 3, Failures: 1.


    assertXmlStringEqualsXmlFile()

    assertXmlStringEqualsXmlFile(string $expectedFile, string $actualXml[, string $message = ''])

    $actualXml 对应的 XML 文档与 $expectedFile 对应的 XML 文档不相同时报告错误,错误讯息由 $message 指定。

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

    例 A.52: assertXmlStringEqualsXmlFile() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class XmlStringEqualsXmlFileTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertXmlStringEqualsXmlFile(
              '/home/sb/expected.xml', '<foo><baz/></foo>');
        }
    }
    ?>
    phpunit XmlStringEqualsXmlFileTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.25Mb
    
    There was 1 failure:
    
    1) XmlStringEqualsXmlFileTest::testFailure
    Failed asserting that two DOM documents are equal.
    --- Expected
    +++ Actual
    @@ @@
     <?xml version="1.0"?>
     <foo>
    -  <bar/>
    +  <baz/>
     </foo>
    
    /home/sb/XmlStringEqualsXmlFileTest.php:7
    
    FAILURES!
    Tests: 1, Assertions: 2, Failures: 1.


    assertXmlStringEqualsXmlString()

    assertXmlStringEqualsXmlString(string $expectedXml, string $actualXml[, string $message = ''])

    $actualXml 对应的 XML 文档与 $expectedXml 对应的 XML 文档不相同时报告错误,错误讯息由 $message 指定。

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

    例 A.53: assertXmlStringEqualsXmlString() 的用法

    <?php
    use PHPUnitFrameworkTestCase;
    
    class XmlStringEqualsXmlStringTest extends TestCase
    {
        public function testFailure()
        {
            $this->assertXmlStringEqualsXmlString(
              '<foo><bar/></foo>', '<foo><baz/></foo>');
        }
    }
    ?>
    phpunit XmlStringEqualsXmlStringTest
    PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
    
    F
    
    Time: 0 seconds, Memory: 5.00Mb
    
    There was 1 failure:
    
    1) XmlStringEqualsXmlStringTest::testFailure
    Failed asserting that two DOM documents are equal.
    --- Expected
    +++ Actual
    @@ @@
     <?xml version="1.0"?>
     <foo>
    -  <bar/>
    +  <baz/>
     </foo>
    
    /home/sb/XmlStringEqualsXmlStringTest.php:7
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
  • 相关阅读:
    第二次作业——结对项目需求分析与原型设计
    调研《构建之法》指导下的历届作品
    软件工程的实践项目课程的自我目标
    使用@Scheduled注解做定时任务
    ng2中的百度echarts3.0使用——(echarts-ng2)
    angular-cli.json配置参数解释,以及依稀常用命令的通用关键参数解释
    SpringData实现Mongodb的CRUD:MongoTemplate框架
    idea利用jdbc连接ORACLE数据库实现一个查询显示
    dbvisualizer的使用
    DUBBO开发问题:添加无法生成主键
  • 原文地址:https://www.cnblogs.com/rxbook/p/6767121.html
Copyright © 2020-2023  润新知