0

我正在尝试测试我班级的构造函数等。它只需要一个必须是字符串的参数。所以我写了这个测试:

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 回答