本文主要讲解一些特殊类型的测试方法
对异常进行测试
在./PHPUnitTutorial下新建一个ThrowException.php文件用于抛出异常
在./PHPUnitTutorial/Test下新建一个ThrowExceptionTest.php文件用于对异常进行测试
被测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php namespace phpUnitTutorial;
use Prophecy\Exception\InvalidArgumentException;
class ThrowException{ public function foo($bar=""){ if(empty($bar)){ throw new \Exception('$bar is empty!!!'); } echo $bar; } public function foo2(){ throw new InvalidArgumentException('Hi there',200); } }
|
测试代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?php namespace phpUnitTutorial\Test;
use phpUnitTutorial\ThrowException; use PHPUnit_Framework_TestCase;
class ThrowExceptionTest extends PHPUnit_Framework_TestCase{ /** * @expectedException Exception */ public function testFooException() { $class = new ThrowException(); $foo = $class->foo(); }
/** * @expectedException InvalidArgumentException * @expectedExceptionMessage Hi there * @expectedExceptionCode 200 */ public function testFoo2Exception() { $class = new ThrowException(); $foo = $class->foo2(); } }
|
测试结果
测试讲解
对于异常的抛出的测试,我们在测试文档的方法名前用注释来标明对异常的测试
1 2 3
| expectedException InvalidArgumentException =>表示期待抛出的异常是InvalidArgumentException expectedExceptionMessage Hi there =>表示期待抛出的异常信息是"Hi there" expectedExceptionCode 200 =>表示期待抛出的异常Code是"200"
|
对输出进行测试
在./PHPUnitTutorial下新建一个Output.php文件用于抛出异常
在./PHPUnitTutorial/Test下新建一个OutputTest.php文件用于对异常进行测试
被测试代码
1 2 3 4 5 6 7 8
| <?php namespace phpUnitTutorial;
class Output{ static function OutputString(){ echo "2333"; } }
|
测试代码
1 2 3 4 5 6 7 8 9 10 11 12
| <?php namespace phpUnitTutorial\Test;
use phpUnitTutorial\Output; use PHPUnit_Framework_TestCase;
class OutputTest extends PHPUnit_Framework_TestCase{ public function testOutputString(){ Output::OutputString(); $this->expectOutputString("23334"); } }
|
测试结果
测试讲解
有时候,想要断言(比如说)某方法的运行过程中生成了预期的输出(例如,通过 echo 或 print)。PHPUnit_Framework_TestCase 类使用 PHP 的 输出缓冲 特性来为此提供必要的功能支持。
使用expectOutputString()方法来设定所预期的输出。如果没有产生预期的输出,测试将计为失败。