2012-10-03 67 views
11

PHPUnit在運行特定測試之前運行測試類的setUp()方法。PHPUnit:從setUp()獲取測試類和方法的名稱?

我爲測試類中的每個測試加載測試特定的燈具,並且不希望明確地這樣做。我最好喜歡在setUp()方法中自動處理這個問題。

如果setUp()方法提供測試類名稱和測試方法名稱,可以這樣做。

是否在setUp()方法中可用於我的測試類和方法的名稱?

回答

26

實現此目的的最簡單方法應該在setUp()中調用$this->getName()

<?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助手並從測試用例中調用相應的助手。

+1

@喬恩 - 補習班,以獲得當前測試類的名稱,'PHPUnit'本身使用[get_class($ this)](http://php.net/manual/en/function.get-class.php)來獲取類名,包括命名空間部分 – xmojmr

1

或者,如果你不想在edorian的答案顯示string(10)部分一樣可以做這樣的:

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