测试用例详解

发表于:2014-08-01来源:uml.org.cn作者:nonultimate点击数: 标签:测试用例
在上篇文章中介绍了如何使用PHPUnit进行单元测试,现在我就来谈谈如何编写测试用例以及怎样保证测试的全面性。

  在上篇文章中介绍了如何使用PHPUnit进行单元测试,现在我就来谈谈如何编写测试用例以及怎样保证测试的全面性。

  通常的测试用例继承自PHPUnit_Framework_TestCase类,其中的每个测试都以test开头,而且声明为公共类型public。每个测试用例都有一个构建方法setUp()和拆除方法tearDown(),分别在每个测试执行之前和之后执行,这两个方法都声明为被保护类型protected。测试语句的类型包括断言、标记跳过、标记未完成。自动生成的测试类使用标记未完成来表示该测试未完成,在测试条件不满足的情况下要使用标记跳过,如测试Oracle数据库驱动时没有Oracle数据库环境、Linux下无法测试SQL Server数据库驱动等。测试结果包括成功、失败和错误。出现错误的结果说明你的代码中有语法或运行时错误,这些错误要首先被解决。

  标记未完成

  在开始写测试用例时,我们使用标记跳过来表示测试是未完成的,这样做和什么都不写的区别是后者会认为测试是成功的,而你可能会在之后忘了写测试。

  PHP代码

  class UnitTest extends PHPUnit_Framework_TestCase

  {

  /**

  * 测试Hello()方法

  */

  public function testHello()

  {

  $this->markTestIncomplete('这是一个未完成的测试');

  }

  }

  ?>

  标记跳过

  使用标记跳过来跳过不满足测试条件的情况,避免出现错误而影响测试结果。

  PHP代码

  class UnitTest extends PHPUnit_Framework_TestCase

  {

  protected function setUp()

  {

  // 该测试用例需要xxx扩展,如果不满足就跳过

  if (!extension_loaded('xxx')) {

  $this->markTestSkipped('这是一个跳过的测试');

  }

  }

  }

  ?>

  断言

  布尔类型

  assertTrue 断言为真

  assertFalse 断言为假

  NULL类型

  assertNull 断言为NULL

  assertNotNull 断言非NULL

  数字类型

  assertEquals 断言等于

  assertNotEquals 断言不等于

  assertGreaterThan 断言大于

  assertGreaterThanOrEqual 断言大于等于

  assertLessThan 断言小于

  assertLessThanOrEqual 断言小于等于

  字符类型

  assertEquals 断言等于

  assertNotEquals 断言不等于

  assertContains 断言包含

  assertNotContains 断言不包含

  assertContainsOnly 断言只包含

  assertNotContainsOnly 断言不只包含

  数组类型

  assertEquals 断言等于

  assertNotEquals 断言不等于

  assertArrayHasKey 断言有键

  assertArrayNotHasKey 断言没有键

  assertContains 断言包含

  assertNotContains 断言不包含

  assertContainsOnly 断言只包含

  assertNotContainsOnly 断言不只包含

  对象类型

  assertAttributeContains 断言属性包含

  assertAttributeContainsOnly 断言属性只包含

  assertAttributeEquals 断言属性等于

  assertAttributeGreaterThan 断言属性大于

  assertAttributeGreaterThanOrEqual 断言属性大于等于

  assertAttributeLessThan 断言属性小于

  assertAttributeLessThanOrEqual 断言属性小于等于

  assertAttributeNotContains 断言不包含

  assertAttributeNotContainsOnly 断言属性不只包含

  assertAttributeNotEquals 断言属性不等于

  assertAttributeNotSame 断言属性不相同

  assertAttributeSame 断言属性相同

  assertSame 断言类型和值都相同

  assertNotSame 断言类型或值不相同

  assertObjectHasAttribute 断言对象有某属性

  assertObjectNotHasAttribute 断言对象没有某属性

  class类型

  class类型包含对象类型的所有断言,还有

  assertClassHasAttribute 断言类有某属性

  assertClassHasStaticAttribute 断言类有某静态属性

  assertClassNotHasAttribute 断言类没有某属性

  assertClassNotHasStaticAttribute 断言类没有某静态属性

  文件相关

  assertFileEquals 断言文件内容等于

原文转自:http://www.uml.org.cn/Test/200910169.asp