2011-04-01 147 views
0

我有80左右的phpunit测试,有没有可能,当一个函数被调用时,我可以如何输出每个测试的函数名称?我知道我可以手动做到这一点,但我希望可能会有一个钩子,每个函数调用都可以帮助我(或类似的东西)。输出函数的名称?

编辑:每台测试方法

+1

每个testER函数(方法)或testED函数? – 2011-04-01 18:56:55

回答

2

简介:

对于您将使用__FUNCTION__(链接)和类方法可以使用__METHOD__(链接)功能。

功能:

function my_function() { 
    echo __FUNCTION__; 
} 

输出将是my_function;

类方法:

class Treffynnon { 
    public function my_method() { 
     echo __METHOD__; 
    } 
} 

输出将是my_method;

显示一个作为它被称为功能:

function my_function($param1, $param2, $param3) { 
    $args = func_get_args(); 
    echo __FUNCTION__ . '(' . implode(', ', $args) . ')'; 
} 
my_function('blah', 'blah', 'blah'); 

输出将是my_function(blah, blah, blah);。很明显,这可以得到很大的改善,以更准确地表示参数如何通过(即引用输出的参数)。

有关更多信息,请参阅func_get_args() man page

2
  • 如果你想显示通过测试每次调用函数的名称,答案是没有,是没有办法。除了在这些函数中添加代码之外,正如其他答案中所述。

PHP没有提供在调用任何函数之前调用“钩子”的方法。

  • 如果你想显示每个测试功能的名称(在您的测试类)时,它就是所谓的,那是另一回事。

首先,你可以将参数添加到您的PHPUnit的电话:

phpunit --verbose tests/ 
phpunit --testdox tests/ 

或者,如果这还不够,你可以使用setUp()功能,即之前执行的每个试验,目前显示测试正在运行。

+0

我也喜欢你的想法。在'setUp()'方法中做它是一个不错的选择。 – Treffynnon 2011-04-01 19:54:03

+0

可以设置什么变量/方法?这是一个更好的方法,但我不知道如何去做。 – tipu 2011-04-01 20:13:00

+1

@tipu - 您可以使用'$ this-> getName()',但我想知道为什么在运行PHPUnit时不会只使用'--verbose'或'--debug'标志。在'setUp()'中执行任何输出可能会导致调用PHPUnit的工具(如IDE或构建服务器)出现问题。只有在需要查看测试方法名称时才更好地使用命令行标志。 – 2011-04-01 20:47:58