PHPunit忽略setup方法中的异常

我注意到PHPUnit忽略了setUp()方法中抛出的异常,并且即使在setup函数抛出异常时也只是运行测试.

在下面的代码中,异常将被忽略,它下面的代码将不会运行,并且test_method将失败,因为它使用的是未定义的变量.

protected $a;

public function setUp() {
    parent:setUp();
    throw new Exception(); // setup now exits silently.
    $this->a = new A(); // will never run
}

public function testA() {
    $this->assertTrue($this->a->something()); // will exit tests with PHP error, because $this->a === null
}

我正在使用phpunit.xml配置文件通过CLI运行phpunit.

有没有人知道如何在异常上做出PHPunit报告,然后停止执行testCase?

解决方法:

不能再生产

运行脚本(下面的完整示例)会生成错误输出,但异常.

我假设你在其他地方有问题,或者可能是一个旧的phpunit版本?即便如此,我也不知道那段代码有任何变化.

您可能还在从trunk运行phpunit? (“3.6”)在这种情况下,处理“自我更改”的“异常”类不能立即测试该情况,但如果适用于您,请尝试使用InvalidArgumentException()(仅用于测试)并查看是否更改的东西.

phpunit test.php
PHPUnit 3.5.13 by Sebastian Bergmann.

E

Time: 0 seconds, Memory: 3.00Mb

There was 1 error:

1) FooTest::testA
Exception: hi

/home/.../test.php:10

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

您的代码可运行:

<?php

class FooTest extends PHPUnit_Framework_TestCase {


    protected $a;

    public function setUp(){
        parent::setUp();
        throw new Exception('hi'); //setup now exits silently.
        $this->a = new A(); //will never run
    }

    public function testA(){
        $this->assertTrue($this->a->something()); //will exit tests with PHP error, because $this->a === null
    }

}
上一篇:无法在ubuntu上安装java9


下一篇:python – LD_LIBRARY_PATH优先级和编译问题