本测试用例是一个判断三角形类型的练习测试用例,基于Netbeans 8.1IDE环境,和phpunit-5.2.10以及脚手架工具phpunit-skelgen-2.0.1。具体的环境搭建可参照:

http://www.cnblogs.com/x3d/p/phpunit-in-netbeans8.html

源代码类:

  1. <?php
  2.  
  3. class Triangle
  4. {
  5.  
  6. /**
  7. * @return boolean
  8. */
  9. public function is_triangle($a, $b, $c)
  10. {
  11. if (empty($a) || empty($b) || empty($c) || !is_numeric($a) || !is_numeric($b) || !is_numeric($c) || $a < 0 || $b < 0 || $c < 0) {
  12. return FALSE;
  13. }
  14. if (($a + $b > $c) && ($b + $c > $a) && ($c + $a > $b)) {
  15. return true;
  16. }
  17. }
  18.  
  19. /**
  20. * 是否直角三角形
  21. *
  22. */
  23. public function is_angled_triangle($a, $b, $c)
  24. {
  25. if ($this->is_triangle($a, $b, $c)) {
  26. if (pow($a, 2) + pow($b, 2) == pow($c, 2)) {
  27. return TRUE;
  28. }
  29. if (pow($a, 2) + pow($c, 2) == pow($b, 2)) {
  30. return TRUE;
  31. }
  32. if (pow($b, 2) + pow($c, 2) == pow($a, 2)) {
  33. return TRUE;
  34. }
  35. return FALSE;
  36. }
  37. }
  38.  
  39. /**
  40. * 是否为等腰三角形
  41. *
  42. */
  43. public function is_isosceles_triangle($a, $b, $c)
  44. {
  45. if ($this->is_triangle($a, $b, $c) && (($a == $b) || ($b == $c) || ($c == $a))) {
  46. return TRUE;
  47. }
  48. }
  49.  
  50. /**
  51. * 是否为等腰直角三角形
  52. * @return boolean
  53. */
  54. public function is_isosceles_angled_triangle($a, $b, $c)
  55. {
  56. //TODO
  57. }
  58.  
  59. /**
  60. * 是否为等边三角形
  61. *
  62. */
  63. public function is_equilateral_triangle($a, $b, $c)
  64. {
  65. if ($this->is_triangle($a, $b, $c) && $a == $b && $b == $c) {
  66. return TRUE;
  67. }
  68. }
  69.  
  70. }

生成的测试用例:

  1. class TriangleTest extends PHPUnit_Framework_TestCase
  2. {
  3.  
  4. /**
  5. * @var Triangle
  6. */
  7. protected $object;
  8.  
  9. /**
  10. * Sets up the fixture, for example, opens a network connection.
  11. * This method is called before a test is executed.
  12. */
  13. protected function setUp()
  14. {
  15. $this->object = new Triangle;
  16. }
  17.  
  18. /**
  19. * Tears down the fixture, for example, closes a network connection.
  20. * This method is called after a test is executed.
  21. */
  22. protected function tearDown()
  23. {
  24.  
  25. }
  26.  
  27. /**
  28. * @covers Triangle::is_triangle
  29. * @todo Implement testIs_triangle().
  30. */
  31. public function testIs_triangle1()
  32. {
  33. $this->assertTrue($this->object->is_triangle(3, 4, 5));
  34. }
  35.  
  36. /**
  37. * @covers Triangle::is_triangle
  38. * @todo Implement testIs_triangle().
  39. */
  40. public function testIs_triangle2()
  41. {
  42. $this->assertFalse($this->object->is_triangle(0, 1, 2));
  43. }
  44.  
  45. /**
  46. * @covers Triangle::is_triangle
  47. * @todo Implement testIs_triangle().
  48. */
  49. public function testIs_triangle3()
  50. {
  51. $this->assertFalse($this->object->is_triangle(1, 0, 2));
  52. }
  53.  
  54. /**
  55. * @covers Triangle::is_triangle
  56. * @todo Implement testIs_triangle().
  57. */
  58. public function testIs_triangle4()
  59. {
  60. $this->assertFalse($this->object->is_triangle(1, 0, 2));
  61. }
  62.  
  63. /**
  64. * @covers Triangle::is_triangle
  65. * @todo Implement testIs_triangle().
  66. */
  67. public function testIs_triangle5()
  68. {
  69. $this->assertFalse($this->object->is_triangle(1, 2, 3));
  70. }
  71.  
  72. /**
  73. * @covers Triangle::is_triangle
  74. * @todo Implement testIs_triangle().
  75. */
  76. public function testIs_triangle6()
  77. {
  78. $this->assertFalse($this->object->is_triangle(1, 3, 2));
  79. }
  80.  
  81. /**
  82. * @covers Triangle::is_triangle
  83. * @todo Implement testIs_triangle().
  84. */
  85. public function testIs_triangle7()
  86. {
  87. $this->assertFalse($this->object->is_triangle(3, 1, 2));
  88. }
  89.  
  90. /**
  91. * @covers Triangle::is_triangle
  92. * @todo Implement testIs_triangle().
  93. */
  94. public function testIs_triangle8()
  95. {
  96. $this->assertFalse($this->object->is_triangle(',', ',', ','));
  97. }
  98.  
  99. /**
  100. * @covers Triangle::is_triangle
  101. * @todo Implement testIs_triangle().
  102. */
  103. public function testIs_triangle9()
  104. {
  105. $this->assertFalse($this->object->is_triangle('a', 3, '@'));
  106. }
  107.  
  108. /**
  109. * @covers Triangle::is_triangle
  110. * @todo Implement testIs_triangle().
  111. */
  112. public function testIs_triangle10()
  113. {
  114. $this->assertFalse($this->object->is_triangle(-3, 4, 5));
  115. }
  116.  
  117. /**
  118. * @covers Triangle::is_triangle
  119. * @todo Implement testIs_triangle().
  120. */
  121. public function testIs_triangle11()
  122. {
  123. $this->assertFalse($this->object->is_triangle(3, 4));
  124. }
  125.  
  126. /**
  127. * @covers Triangle::is_angled_triangle
  128. * @todo Implement testIs_angled_triangle().
  129. */
  130. public function testIs_angled_triangle()
  131. {
  132. $this->assertTrue($this->object->is_angled_triangle(3, 4, 5));
  133. }
  134.  
  135. /**
  136. * @covers Triangle::is_isosceles_triangle
  137. * @todo Implement testIs_isosceles_triangle().
  138. */
  139. public function testIs_isosceles_triangle1()
  140. {
  141. $this->assertTrue($this->object->is_isosceles_triangle(3, 3, 4));
  142. }
  143.  
  144. /**
  145. * @covers Triangle::is_isosceles_triangle
  146. * @todo Implement testIs_isosceles_triangle().
  147. */
  148. public function testIs_isosceles_triangle2()
  149. {
  150. $this->assertTrue($this->object->is_isosceles_triangle(3, 4, 4));
  151. }
  152.  
  153. /**
  154. * @covers Triangle::is_isosceles_triangle
  155. * @todo Implement testIs_isosceles_triangle().
  156. */
  157. public function testIs_isosceles_triangle3()
  158. {
  159. $this->assertTrue($this->object->is_isosceles_triangle(3, 4, 3));
  160. }
  161.  
  162. /**
  163. * @covers Triangle::is_isosceles_angled_triangle
  164. * @todo Implement testIs_isosceles_angled_triangle().
  165. */
  166. public function testIs_isosceles_angled_triangle()
  167. {
  168. //
  169. }
  170.  
  171. /**
  172. * @covers Triangle::is_equilateral_triangle
  173. * @todo Implement testIs_equilateral_triangle().
  174. */
  175. public function testIs_equilateral_triangle()
  176. {
  177. $this->assertTrue($this->object->is_equilateral_triangle(3, 3, 3));
  178. }
  179.  
  180. }

运行结果如下:

  1. "F:\php-7\php.exe" "F:\php-7\phpunit-5.2.10.phar" "--colors" "--log-junit" "C:\Users\legend\AppData\Local\Temp\nb-phpunit-log.xml" "--bootstrap" "C:\Users\legend\Documents\NetBeansProjects\testexm\test\bootstrap.php" "D:\Program Files\NetBeans 8.1\php\phpunit\NetBeansSuite.php" "--" "--run=C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php"
  2.  
  3. ....FFF...E...... 17 / 17 (100%)
  4.  
  5. Time: 136 ms, Memory: 8.00Mb
  6.  
  7. There was 1 error:
  8.  
  9. 1) TriangleTest::testIs_triangle11
  10. Missing argument 3 for Triangle::is_triangle(), called in C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php on line 129 and defined
  11.  
  12. C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangle.php:10
  13. C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:129
  14.  
  15. --
  16.  
  17. There were 3 failures:
  18.  
  19. 1) TriangleTest::testIs_triangle5
  20. Failed asserting that null is false.
  21.  
  22. C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:75
  23.  
  24. 2) TriangleTest::testIs_triangle6
  25. Failed asserting that null is false.
  26.  
  27. C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:84
  28.  
  29. 3) TriangleTest::testIs_triangle7
  30. Failed asserting that null is false.
  31.  
  32. C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:93
  33.  
  34. FAILURES!
  35. Tests: 17, Assertions: 15, Errors: 1, Failures: 3.
  36. PHP Warning: PHP Startup: mysql: Unable to initialize module
  37. Module compiled with module API=20121212
  38. PHP compiled with module API=20151012
  39. These options need to match
  40. in Unknown on line 0
  41. PHP Warning: PHP Startup: igbinary: Unable to initialize module
  42. Module compiled with module API=20121212
  43. PHP compiled with module API=20151012
  44. These options need to match
  45. in Unknown on line 0
  46. PHP Warning: PHP Startup: redis: Unable to initialize module
  47. Module compiled with module API=20121212
  48. PHP compiled with module API=20151012
  49. These options need to match
  50. in Unknown on line 0
  51. 完成。

运行后发现原来测试代码中测试例

  1. testIs_triangle5testIs_triangle6testIs_triangle7

未通过,原因为源代码中未对两边和等于第三边做判断

测试用例应该有更好的实现方式,继续学习中。。

PHP测试用例练习的更多相关文章

  1. TFS 测试用例步骤数据统计

    TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...

  2. 如何使用RobotFramework编写好的测试用例

    如何使用Robot Framework编写优秀的测试用例 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试 ...

  3. Vertica 导出数据测试用例

    需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...

  4. Appium简单测试用例

    工程目录如下: 封装初始化androiddriver 方法 import org.openqa.selenium.remote.DesiredCapabilities; import java.io. ...

  5. qunit 前端脚本测试用例

    首先引用qunit 测试框架文件 <link rel="stylesheet" href="qunit-1.22.0.css"> <scrip ...

  6. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

  7. web安全性测试用例

    建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1.   输入验证 客户端验证 服务器端验证(禁用脚本调试,禁用Cookies) 1.输入很大的数(如4,29 ...

  8. Web测试的常用测试用例与知识

    1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性 ...

  9. 封装properties从配置文件读取测试用例输入数据

    当每个测试用例都有输入数据,而且数据量比较大的情况,可以采取从文件读取 如果想让同一套测试用例能够适应相似的输入数据,如果直接代码里面来回切换回可能会漏,而且还需要debug检错 可以把一些公用的输入 ...

  10. maven打包不执行测试用例

    在执行maven打包时不需要执行测试用例,使用如下2种方式实现:-DskipTests=true : 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 ...

随机推荐

  1. poj 2378(树形dp)

    题目链接:http://poj.org/problem?id=2378 思路:num[u]表示以u为根的子树的顶点个数(包括),如果去掉u之后u的每棵子树都小于等于n/2,则选择u. #include ...

  2. SQL经典短小代码收集

    --SQL Server:Select TOP N * From TABLE Order By NewID() --开头到N条记录Select Top N * From 表--N到M条记录(要有主索引 ...

  3. 【转】Hadoop集群添加磁盘步骤

    转自:http://blog.csdn.net/huyuxiang999/article/details/17691405 一.实验环境 : 1.硬件:3台DELL服务器,CPU:2.27GHz*16 ...

  4. 关于sqoop与datax。 和sqoop to oracle插件OraOop

         之前我还在想了解下datax,是否有可能替换sqoop,但了解后发现,datax和sqoop的业务场景是不同的.前者适合异构数据库的同步,后者适合hdfs与rdbms互相之间的同步.针对sq ...

  5. 逆序数 POJ 2299 Ultra-QuickSort

    题目传送门 /* 题意:就是要求冒泡排序的交换次数. 逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序. 一个排列中逆序的总数就称为这个排列的逆 ...

  6. unity textFilde

    #pragma strict private var editUsername:String; private var editPassword:String; private var editSho ...

  7. JavaScript,一个超级简单的方法判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断. 大家应该还记得JavaScript行内样式怎么写吧?(看来我是 ...

  8. topcoder SRM 593 DIV2 WolfDelaymaster

    #include <iostream> #include <string> #include <algorithm> using namespace std; cl ...

  9. 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1146 第一种做法(时间太感人): 第二种做法(rank5,好开心) ================ ...

  10. Codeforces Round #191 (Div. 2) E题

    状态压缩DP,算sum,本来是枚举的,结果TLE了.. #include <iostream> #include <cstring> #include <cstdio&g ...