2011-04-01 145 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