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

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

源代码类:

 <?php

 class Triangle
 {

     /**
       * @return boolean
      */
     public function is_triangle($a, $b, $c)
     {
         if (empty($a) || empty($b) || empty($c) || !is_numeric($a) || !is_numeric($b) || !is_numeric($c) || $a < 0 || $b < 0 || $c < 0) {
             return FALSE;
         }
         if (($a + $b > $c) && ($b + $c > $a) && ($c + $a > $b)) {
             return true;
         }
     }

     /**
      * 是否直角三角形
      *
      */
     public function is_angled_triangle($a, $b, $c)
     {
         if ($this->is_triangle($a, $b, $c)) {
             if (pow($a, 2) + pow($b, 2) == pow($c, 2)) {
                 return TRUE;
             }
             if (pow($a, 2) + pow($c, 2) == pow($b, 2)) {
                 return TRUE;
             }
             if (pow($b, 2) + pow($c, 2) == pow($a, 2)) {
                 return TRUE;
             }
             return FALSE;
         }
     }

     /**
      * 是否为等腰三角形
      *
      */
     public function is_isosceles_triangle($a, $b, $c)
     {
         if ($this->is_triangle($a, $b, $c) && (($a == $b) || ($b == $c) || ($c == $a))) {
             return TRUE;
         }
     }

     /**
      * 是否为等腰直角三角形
      * @return boolean
      */
     public function is_isosceles_angled_triangle($a, $b, $c)
     {
         //TODO
     }

     /**
      * 是否为等边三角形
      *
      */
     public function is_equilateral_triangle($a, $b, $c)
     {
         if ($this->is_triangle($a, $b, $c) && $a == $b && $b == $c) {
             return TRUE;
         }
     }

 }

生成的测试用例:

class TriangleTest extends PHPUnit_Framework_TestCase
{

    /**
     * @var Triangle
     */
    protected $object;

    /**
     * Sets up the fixture, for example, opens a network connection.
     * This method is called before a test is executed.
     */
    protected function setUp()
    {
        $this->object = new Triangle;
    }

    /**
     * Tears down the fixture, for example, closes a network connection.
     * This method is called after a test is executed.
     */
    protected function tearDown()
    {

    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle1()
    {
        $this->assertTrue($this->object->is_triangle(3, 4, 5));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle2()
    {
        $this->assertFalse($this->object->is_triangle(0, 1, 2));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle3()
    {
        $this->assertFalse($this->object->is_triangle(1, 0, 2));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle4()
    {
        $this->assertFalse($this->object->is_triangle(1, 0, 2));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle5()
    {
        $this->assertFalse($this->object->is_triangle(1, 2, 3));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle6()
    {
        $this->assertFalse($this->object->is_triangle(1, 3, 2));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle7()
    {
        $this->assertFalse($this->object->is_triangle(3, 1, 2));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle8()
    {
        $this->assertFalse($this->object->is_triangle(',', ',', ','));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle9()
    {
        $this->assertFalse($this->object->is_triangle('a', 3, '@'));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle10()
    {
        $this->assertFalse($this->object->is_triangle(-3, 4, 5));
    }

    /**
     * @covers Triangle::is_triangle
     * @todo   Implement testIs_triangle().
     */
    public function testIs_triangle11()
    {
        $this->assertFalse($this->object->is_triangle(3, 4));
    }

    /**
     * @covers Triangle::is_angled_triangle
     * @todo   Implement testIs_angled_triangle().
     */
    public function testIs_angled_triangle()
    {
        $this->assertTrue($this->object->is_angled_triangle(3, 4, 5));
    }

    /**
     * @covers Triangle::is_isosceles_triangle
     * @todo   Implement testIs_isosceles_triangle().
     */
    public function testIs_isosceles_triangle1()
    {
        $this->assertTrue($this->object->is_isosceles_triangle(3, 3, 4));
    }

    /**
     * @covers Triangle::is_isosceles_triangle
     * @todo   Implement testIs_isosceles_triangle().
     */
    public function testIs_isosceles_triangle2()
    {
        $this->assertTrue($this->object->is_isosceles_triangle(3, 4, 4));
    }

    /**
     * @covers Triangle::is_isosceles_triangle
     * @todo   Implement testIs_isosceles_triangle().
     */
    public function testIs_isosceles_triangle3()
    {
        $this->assertTrue($this->object->is_isosceles_triangle(3, 4, 3));
    }

    /**
     * @covers Triangle::is_isosceles_angled_triangle
     * @todo   Implement testIs_isosceles_angled_triangle().
     */
    public function testIs_isosceles_angled_triangle()
    {
        //
    }

    /**
     * @covers Triangle::is_equilateral_triangle
     * @todo   Implement testIs_equilateral_triangle().
     */
    public function testIs_equilateral_triangle()
    {
        $this->assertTrue($this->object->is_equilateral_triangle(3, 3, 3));
    }

}

运行结果如下:

"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"

....FFF...E......                                                 17 / 17 (100%)

Time: 136 ms, Memory: 8.00Mb

There was 1 error:

1) TriangleTest::testIs_triangle11
Missing argument 3 for Triangle::is_triangle(), called in C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php on line 129 and defined

C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangle.php:10
C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:129

--

There were 3 failures:

1) TriangleTest::testIs_triangle5
Failed asserting that null is false.

C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:75

2) TriangleTest::testIs_triangle6
Failed asserting that null is false.

C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:84

3) TriangleTest::testIs_triangle7
Failed asserting that null is false.

C:\Users\legend\Documents\NetBeansProjects\testexm\test\triangleTest.php:93

FAILURES!
Tests: 17, Assertions: 15, Errors: 1, Failures: 3.
PHP Warning:  PHP Startup: mysql: Unable to initialize module
Module compiled with module API=20121212
PHP    compiled with module API=20151012
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: igbinary: Unable to initialize module
Module compiled with module API=20121212
PHP    compiled with module API=20151012
These options need to match
 in Unknown on line 0
PHP Warning:  PHP Startup: redis: Unable to initialize module
Module compiled with module API=20121212
PHP    compiled with module API=20151012
These options need to match
 in Unknown on line 0
完成。

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

testIs_triangle5、testIs_triangle6、testIs_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. List、Map、Set

    这样的题属于随意发挥题:这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述能力.如果你明白,但表述不清楚,在别人那里则等同于不明白. 首先,List与Set具有相似性 ...

  2. [VSTS]让ADO.NET Entity Framework支持Oracle数据库(转载)

    近期由于项目所需不得不研究Oracle数据库,回想上一次用Oracle还是07年的事情,实习时候做华晨宝马的项目简单接触了Oracle.这次的项目需要基于.NET平台,我个人的习惯是能用微软自带的就不 ...

  3. PHP项目:如何用PHP高并发检索数据库?

    对于抢票.秒杀这种业务,我说说自己对这种高并发的理解吧,这里提出个人认为比较可行的几个方案: 方案一:使用队列来实现 可以基于例如MemcacheQ等这样的消息队列,具体的实现方案这么表述吧 比如有1 ...

  4. 关于phpstudy安装的问题

    1.最常见的就是80端口冲突.如果是安装在服务器的话,有些服务器已经默认安装了iis,所以会有冲突.关闭iis即可. 2.明明装了vc9运行库,但错误还是不行.如果你是整个项目copy过来的,可能就会 ...

  5. LoadRunner之自定义HTTP请求

    LoadRunner之自定义HTTP请求 性能测试开发脚本时使用的都是同样的模式.对在性能测试规划时指定的典型业务逻辑场景进行录制,形成基本的脚本骨架. 录制脚本后需要对脚本进行编辑,以满足性能测试需 ...

  6. DFS/BFS Codeforces Round #301 (Div. 2) C. Ice Cave

    题目传送门 /* 题意:告诉起点终点,踩一次, '.'变成'X',再踩一次,冰块破碎,问是否能使终点冰破碎 DFS:如题解所说,分三种情况:1. 如果两点重合,只要往外走一步再走回来就行了:2. 若两 ...

  7. POJ2762 Going from u to v or from v to u?(判定单连通图:强连通分量+缩点+拓扑排序)

    这道题要判断一张有向图是否是单连通图,即图中是否任意两点u和v都存在u到v或v到u的路径. 方法是,找出图中所有强连通分量,强连通分量上的点肯定也是满足单连通性的,然后对强连通分量进行缩点,缩点后就变 ...

  8. BZOJ2905 : 背单词

    首先对所有单词建立AC自动机,$S$是$T$的子串等价于$T$的某个前缀通过$fail$链可以走到$S$的终止节点,即$S$的终止节点是$T$某个前缀在$fail$树上的祖先. 设$f[i]$表示考虑 ...

  9. BZOJ3757 : 苹果树

    树上莫队,有几个坑: a可能等于b 数据范围是100000 #include<cstdio> #include<algorithm> #include<cmath> ...

  10. 【POJ】1269 Intersecting Lines(计算几何基础)

    http://poj.org/problem?id=1269 我会说这种水题我手推公式+码代码用了1.5h? 还好新的一年里1A了---- #include <cstdio> #inclu ...