PHPUnit:从 setUp() 获取测试类和方法的名称?

2022-08-30 19:42:55

PHPUnit 在运行特定测试之前运行测试类的方法。setUp()

我为测试类中的每个测试加载特定于测试的夹具,并且不希望必须显式执行此操作。理想情况下,我想在方法中自动处理这个问题。setUp()

如果该方法提供了测试类名和测试方法名,则可以执行此操作。setUp()

即将运行的测试类和方法的名称是否可供我在方法中使用?setUp()


答案 1

实现此目的的最简单方法应该是调用 。$this->getName()setUp()

<?php

class MyTest extends PHPUnit_Framework_TestCase
{
    public function setUp() {
        var_dump($this->getName());
    }


    public function testMethod()
    {
        $this->assertEquals(4,2+2,'OK1');
    }
}

和运行:

phpunit MyTest.php 

生产:

PHPUnit 3.7.1 by Sebastian Bergmann.

.string(10) "testMethod"


Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)

总的来说,我建议不要这样做,但肯定在某些情况下,这可能是一个很好的做事方式。

其他选项是具有多个测试类,并将使用相同夹具的所有测试放在一个类中。

另一种方法是使用私有的 setUp 帮助程序,并从测试用例中调用相应的帮助程序。


答案 2

或者,如果您不想像edorian的答案那样显示该部分,则可以这样做:string(10)

protected function setUp()
{
    echo $this->getName() . "\n";
}

推荐