0

とりわけ、クラスのコンストラクターをテストしようとしています。文字列でなければならない正確に 1 つのパラメーターが必要です。だから私はこのテストを書いた:

class categoryTest extends PHPUnit_Framework_TestCase {

  public function testConstructor() {

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(1);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(-500);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(true);

    $this->setExpectedException('Exception', 'Unknown data type.');
    $objCategory = new category(array());

    ...

  }

  public function testNextMethod() {

  }

}

ご覧のとおり、毎回同じ例外が発生することが予想されます。

これは非常にうまく機能しているように見えますが、スクリプトは終了後に testNextMethod() にスキップします

$this->setExpectedException('Exception', 'Unknown data type.');
$objCategory = new category(1);

. テストごとに独自の testMethod() を作成する必要がありますか? または、回避策はありますか?

よろしく、マフ

編集:

キプリアンさん、こんにちは。

ご回答ありがとうございます。私はこのように私の問題を解決しました:

class categoryTest extends PHPUnit_Framework_TestCase {

    protected $backupGlobals = FALSE;

    /**
      *
      * @dataProvider provider
      *
      **/
    public function testMuff($strCategory) {

      $this->setExpectedException('Exception', 'Unknown data type.');
      $objCategory = new category($strCategory);

    }

    public function provider() {

      $objHIS = new DDDBL('HIS');

      return array(array(1),
                   array(-500),
                   array(true),
                   array(array()),
                   array($objHIS)
                  );

    }

    ...

}

表記法がまったく気に入らなくても、今では完全に機能します。

4

1 に答える 1

1

あなたが探しているのはDataProviderです。ここを見てください:

http://www.phpunit.de/manual/3.6/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.data-providers

于 2013-01-07T11:27:27.373 に答える