PHP测试用例练习
本测试用例是一个判断三角形类型的练习测试用例,基于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测试用例练习的更多相关文章
- TFS 测试用例步骤数据统计
TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...
- 如何使用RobotFramework编写好的测试用例
如何使用Robot Framework编写优秀的测试用例 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试 ...
- Vertica 导出数据测试用例
需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...
- Appium简单测试用例
工程目录如下: 封装初始化androiddriver 方法 import org.openqa.selenium.remote.DesiredCapabilities; import java.io. ...
- qunit 前端脚本测试用例
首先引用qunit 测试框架文件 <link rel="stylesheet" href="qunit-1.22.0.css"> <scrip ...
- .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)
Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...
- web安全性测试用例
建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 1. 输入验证 客户端验证 服务器端验证(禁用脚本调试,禁用Cookies) 1.输入很大的数(如4,29 ...
- Web测试的常用测试用例与知识
1. Web测试中关于登录的测试 2. 搜索功能测试用例设计 3. 翻页功能测试用例 4. 输入框的测试 5. Web测试的常用的检查点 6. 用户及权限管理功能常规测试方法 7. Web测试之兼容性 ...
- 封装properties从配置文件读取测试用例输入数据
当每个测试用例都有输入数据,而且数据量比较大的情况,可以采取从文件读取 如果想让同一套测试用例能够适应相似的输入数据,如果直接代码里面来回切换回可能会漏,而且还需要debug检错 可以把一些公用的输入 ...
- maven打包不执行测试用例
在执行maven打包时不需要执行测试用例,使用如下2种方式实现:-DskipTests=true : 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下 ...
随机推荐
- 搭建邮局(邮件服务器) - hmailserver
1.查看服务器mx是否解析成功 nslookup set type=mx 2.hmailserver服务器 smtp设置 3.foxmail 设置 4.使用webmail(after ...
- CI中写原生SQL(封装查询)
封装查询 封装,通过让系统为你组装各个查询语句,能够简化你的查询语法.参加下面的范例: $sql = "SELECT * FROM some_table WHERE id = ? AND s ...
- oracle 10g 学习之游标使用和异常介绍(11)
一.游标 1. 使用游标 要求: 打印出 80 部门的所有的员工的工资: salary: xxx declare --1. 定义游标 cursor salary_cursor is select sa ...
- Java Hour 45 Hibernate ( 2 )
基本确定了,一个月后也就是在2014年的开端,我将离开这个公司. 所以我大概还有30个学时. 45.1 你需要一个数据库 首先,必须有一个试验用的数据库,这里我们使用MySQL. 尽管书中的说明是使用 ...
- js实现快速排序(in-place)简述
快速排序,又称划分交换排序.以分治法为策略实现的快速排序算法. 本文主要要谈的是利用javascript实现in-place思想的快速排序 分治法: 在计算机科学中,分治法是建基于多项分支递归的一种很 ...
- C语言位运算详解(转载)
转载自:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C ...
- Codeforces Round #Pi (Div. 2) C. Geometric Progression map
C. Geometric Progression Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- display显示隐藏
display <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <t ...
- List<T>的使用
定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用:泛型最常见的用途是泛型集合我们在创建列表类时,列表项的数据类型可能是int,s ...
- BZOJ4399 : 魔法少女LJJ
将所有权值离散化,建立权值线段树,维护区间内数字个数以及对数的和,用于比较乘积大小. 对于每个连通块维护一棵权值线段树,合并时用线段树合并. 对于操作3和4,暴力删除所有不合法节点,然后一并修改后插入 ...