2
在一个使用相同@dataProvider
的两个或多个测试的PHPUnit测试用例中,我希望提供程序找出它正在向哪个测试提供数据。我已经完成了这个使用debug_backtrace()
,但这感觉不对。 PHPUnit是否提供了另一种更标准的方法来实现这一点?如果是,如何?如何找到数据提供者正在提供数据的测试?
<?php
class MyTest extends \PHPUnit_Framework_TestCase {
/** @dataProvider dataProvider */
public function testA() {}
/** @dataProvider dataProvider */
public function testB() {}
public function dataProvider() {
$trace = debug_backtrace(false, 3);
$caller = $trace[2]['args'][2];
// $caller === 'testA' or $caller === 'testB'
}
}
为什么你需要那个?如果您需要不同的测试数据,请使用不同的提供商。如果数据之间有很多相似之处,请将它们提取到另一种方法中。 –
我想自动化测试数据管理,我需要一个入口点来从文件中检索数据。数据提供者不会保留测试用例的一部分,而是驻留在一个特征中,该特征旨在根据测试用例和正在执行的实际测试从文件系统获取测试数据。 – hielsnoppe
然后创建多个包装器方法。 –