21

PHPUnit はsetUp()、特定のテストを実行する前に、テスト クラスのメソッドを実行します。

テスト クラスのすべてのテストに対してテスト固有のフィクスチャをロードしますが、明示的にロードする必要はありません。理想的には、setUp()メソッドでこれを自動的に処理したいと思います。

setUp()メソッドがテストクラス名とテストメソッド名を利用できるようにする場合、これを行うことができます。

実行しようとしているテスト クラスとメソッドの名前は、メソッドで使用できますsetUp()か?

4

2 に答える 2

44

これを実現する最も簡単な方法は、 を呼び出すこと$this->getName()ですsetUp()

<?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)

一般に、これを行うことはお勧めしませんが、それが良い方法である場合もあります。

他のオプションは、複数のテスト クラスを持ち、同じフィクスチャを使用するすべてのテストを 1 つのクラスにまとめることです。

もう 1 つは、プライベートなセットアップ ヘルパーを用意し、テスト ケースから適切なヘルパーを呼び出すことです。

于 2012-10-03T14:44:48.743 に答える
3

または、edorian の回答のようにその部分を表示したくない場合は、次string(10)のようにすることができます。

protected function setUp()
{
    echo $this->getName() . "\n";
}
于 2016-04-29T09:32:09.543 に答える