作者:乔父系_377 | 来源:互联网 | 2013-04-22 17:18
在上一篇PHP单元测试利器:PHPUNIT初探文章中,我们对phpunit有了一个初步的认识,在本文中将继续深入讲解下phpunit中的一些用法。1、markTestSkipped和markTestIncomplete在phpunit中,有两个有用的方法markTestSkipped和markTestIncomp
在上一篇PHP单元测试利器:PHPUNIT初探文章中,我们对phpunit有了一个初步的认识,在本文中将继续深入讲解下phpunit中的一些用法。
1、markTestSkipped和markTestIncomplete
在phpunit中,有两个有用的方法markTestSkipped和markTestIncomplete。它们能允许你编写的单元测试中不单是只有通过和失败两种结果。markTestSkipped能让PHPUNIT不去执行某个已经编写好的测试方法。举个例子说明,比如下面的程序:
php
public function testThisMightHaveADb()
{
$myObject -> createObject();
try {
$db = new Database();
$this -> assertTrue( $db -> rowExists());
} catch (DatabseException $e ) {
$this -> markTestSkipped( ' This test was skipped because there was a database problem ' );
}
}
?>
在上面的程序中,是一个连接数据库后,判断数据是否存在的测试方法,但如果考虑数据库的连接异常的话,则应该在抛出异常时,使用markTestSkipped指出该测试方法应该是被忽略的,因为出现了异常,而注意的时,此时有可能你写的代码是正确的,只不过是出现了异常而已,这样phpunit在输出时就不会只是简单的输出fail。
而markTestIncomplete也有点类似,但有点不同的是,它是当开发者在编写一个未完成的测试方法时使用的,标记出某个测试方法还没编写完成,同样测试结果也不会是fail,只是告诉phpunit这个测试方法还没编写完成而已,例子如下:
php
public function testAreNotEnoughHours()
{
$this -> markTestIncomplete( " There aren't enough hours in the day to have my tests go green " );
$trueVariable = true ;
$this -> assertTrue( $trueVariable );
}
?>
2、更深入了解phpunit中的断言
在上一篇文章中,已经基本讲解了一些基本的phpunit中的断言的使用,这里以一个例子,下面是一个类的代码:
php
class Testable
{
public $trueProperty = true ;
public $resetMe = true ;
public $testArray = array (
' first key ' => 1 ,
' second key ' => 2
);
private $testString = " I do love me some strings " ;
public function __construct()
{
}
public function addValues( $valueOne , $valueTwo ) {
return $valueOne + $valueTwo ;
}
public function getTestString()
{
return $this -> testString;
}
}
?>
我们编写的单元测试代码初步的框架如下:
php
class TestableTest extends PHPUnit_Framework_TestCase
{
private $_testable = null ;
public function setUp()
{
$this -> _testable = new Testable();
}
public function tearDown()
{
$this -> _testable = null ;
}
/* * test methods will go here */
}
?>
在上一篇文章中,已经介绍了setUp方法和tearDown方法,这里的setUp方法中,建立了Testable()实例并保存在变量$_testable中,而在tearDown方法中,销毁了该对象。
接下来,开始编写一些断言去测试,首先看assertTrue和assertFalase:
php
public function testTruePropertyIsTrue()
{
$this -> assertTrue( $this -> _testable -> trueProperty , " trueProperty isn't true " );
}
public function testTruePropertyIsFalse()
{
$this -> assertFalse( $this -> _testable -> trueProperty , " trueProperty isn't false " );
}
?>
在上一篇文章中已经介绍过assertTrue和assertFalse了,这里留意一下其中的第二个参数,其含义是,当该断言的测试不通过时,自定义的显示信息。比如在这个测试方法中,当trueProperty不为真值时,将显示“trueProperty isn't true”的信息。
接下来再看下在数值方面上phpunit的断言使用实例:
var cpro_id = "u6885494";
推荐阅读
《夜行船》译文与原文赏析:宋代诗人仇远的诗意解析 ...
[详细]
蜡笔小新 2024-11-01 19:17:11
《思归乐》译文与原文赏析:唐代诗人元稹的诗意解读 ...
[详细]
蜡笔小新 2024-11-01 18:56:40
本周的工作与生活经历颇为波折。原本决心坚决要与妻子离婚,但令人意外的是,她突然提出和好。这种突如其来的变化让人感到困惑和不解,不知是自己的态度过于软弱还是她的行为背后有其他原因。尽管她再次表示愿意修复关系,但她的冷漠和不关心依旧让我感到失望和无奈。 ...
[详细]
蜡笔小新 2024-11-01 16:23:31
多条件联动筛选功能广泛应用于图片展示、装修设计、机械设备和在线商城等场景,通常筛选条件应聚焦于用户最关心的要素,而非涵盖所有可能的选项。在DedeCMS中,多条件筛选的PHP开发并未内置删除已选条件的功能,但通过理解PHP筛选与JS筛选的不同机制,实现这一功能相对简单且易于操作。 ...
[详细]
蜡笔小新 2024-11-01 16:21:47
掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ...
[详细]
蜡笔小新 2024-11-01 16:16:26
在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ...
[详细]
蜡笔小新 2024-11-01 16:14:23
如今,许多用户正在体验手机QQ的坦白说功能,许多人对这一功能中的身份标签选择感到好奇。本文将详细介绍可用的身份标签及其具体应用,帮助大家更好地理解和使用坦白说功能。如果你对坦白说还不熟悉,欢迎点击链接了解更多详细信息。 ...
[详细]
蜡笔小新 2024-11-01 16:12:57
为了在Fragment中直接调用Activity的方法,可以通过定义一个接口并让Activity实现该接口来实现。具体步骤包括:首先在Fragment中声明一个接口,并在Activity中实现该接口。接着,在Fragment中通过类型转换检查Activity是否实现了该接口,如果实现了则调用相应的方法。这种方法不仅提高了代码的解耦性,还增强了模块间的通信效率。此外,还可以通过ViewModel或LiveData等现代Android架构组件进一步优化这一过程,以实现更加高效和可靠的通信机制。 ...
[详细]
蜡笔小新 2024-11-01 16:08:16
在电视剧《神话》中,如何评价吕素对小川的感情?你是否能够接受吕素这个角色? ...
[详细]
蜡笔小新 2024-11-01 15:51:44
开源系统的便利性显而易见,但其潜在的安全漏洞也不容忽视,PHPCMS同样面临这一挑战。对于普通网站而言,确保PHPCMS的安全性至关重要。以下几点是需要特别关注的配置事项:1、后台登录地址的安全设置;2、文件权限管理的严格控制;3、定期更新与补丁安装。通过这些措施,可以有效提升系统的整体安全性。 ...
[详细]
蜡笔小新 2024-11-01 15:51:27
在OpenCV 2中,`Mat`类作为核心组件,对于图像处理至关重要。本文将深入探讨`Mat`对象的类型、深度与步长属性,这些属性是理解和优化图像操作的基础。通过具体示例,我们将展示如何利用这些属性实现高效的图像缩小功能。此外,还将讨论这些属性在实际应用中的重要性和常见误区,帮助读者更好地掌握`Mat`类的使用方法。 ...
[详细]
蜡笔小新 2024-11-01 15:39:04
通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ...
[详细]
蜡笔小新 2024-11-01 15:24:52
Weex 父子组件间通信机制详解及子组件调用父组件方法的实现方式 ...
[详细]
蜡笔小新 2024-11-01 15:19:44
SQLSharper 2014 是一款专为 SQL Server Management Studio (SSMS) 设计的功能增强插件,旨在提升 T-SQL 开发者的效率。该插件提供了多种实用工具,包括快速查询数据库对象、详细查看表结构、优化查询结果导出以及自动生成代码等。适用于需要高效管理和开发 SQL 数据库的专业人士。 ...
[详细]
蜡笔小新 2024-11-01 15:12:46