Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit:从setUp()获取测试类和方法的名称?_Php_Phpunit - Fatal编程技术网

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

PHPUnit:从setUp()获取测试类和方法的名称?,php,phpunit,Php,Phpunit,PHPUnit在运行特定测试之前运行测试类的setUp()方法 我为一个测试类中的每个测试加载特定于测试的夹具,并且不希望显式地这样做。理想情况下,我希望在setUp()方法中自动处理此问题 如果setUp()方法使测试类名和测试方法名可用,则可以执行此操作 将要运行的测试类和方法的名称在setUp()方法中对我可用吗?实现这一点的最简单方法应该是在setUp()中调用$this->getName() 产生: PHPUnit 3.7.1 by Sebastian Bergmann. .stri

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

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

如果
setUp()
方法使测试类名和测试方法名可用,则可以执行此操作


将要运行的测试类和方法的名称在
setUp()
方法中对我可用吗?

实现这一点的最简单方法应该是在
setUp()
中调用
$this->getName()

产生:

PHPUnit 3.7.1 by Sebastian Bergmann.

.string(10) "testMethod"


Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)

总的来说,我不建议这样做,但在某些情况下,这确实是一种很好的做事方式

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


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

或者,如果您不想在edorian的答案中显示
字符串(10)
部分,您可以这样做:

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

@jon cram为了获取当前测试类的名称,
PHPUnit
本身用于获取包含命名空间部分的类名,尤其是
getName()
当前被标记为PHPUnit的
@internal
,并注意被排除在向后兼容性之外。相关的
toString()
也是
@内部接口的一部分。似乎它并不热衷于向公众提供这方面的信息,即使从技术上讲,它是公开的。
PHPUnit 3.7.1 by Sebastian Bergmann.

.string(10) "testMethod"


Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)
protected function setUp()
{
    echo $this->getName() . "\n";
}