当前位置:  编程技术>php
本页文章导读:
    ▪PHP浮点数比较不准确的解决方法      本节内容: PHP浮点数比较 代码:   代码示例: <?php $a = 0.1; $b = 0.7; var_dump(($a + $b) == 0.8);   输出结果: boolean false 原因出在哪里呢? php中文手册中对于浮点数有以下警告信息: Warning .........
    ▪PHPUnit教程(六)Fixture      本节主要内容: PHPUnit Fixture 在编写测试用例时,可能最费时间的就是编写那些将程序设置到使用状态和测试完毕之后将其再设置回初始状态的代码了。 PHPUnit提供了setUp和tearDown这两个方.........
    ▪PHPUnit教程(五)PHPUnit参数详解      本节主要内容: PHPUnit参数详解    说明:本文直接翻译自PHPUnit官方文档,个人翻译水平有限,可能会存在某些词和意思翻译不准的地方,大家凑和看,呵呵。     Runs the tests that are provide.........

[1]PHP浮点数比较不准确的解决方法
    来源: 互联网  发布时间: 2013-12-24

本节内容:
PHP浮点数比较

代码:
 

代码示例:
<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);
 

输出结果:
boolean false

原因出在哪里呢?
php中文手册中对于浮点数有以下警告信息:
Warning
浮点数精度
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。
这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。

因此,不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以,不要相信浮点数结果精确到了最后一位,也不要比较两个浮点数是否相等。
如果确实需要更高的精度,应该使用任意精度数学函数或 gmp 函数

将以上代码修改为:
 

代码示例:
<?php
$a = 0.1;
$b = 0.7; // www.
var_dump(bcadd($a,$b,2) == 0.8);

如此便解决了浮点数的计算问题。

特此分享,以帮助遇到同样问题的朋友。


    
[2]PHPUnit教程(六)Fixture
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
PHPUnit Fixture

在编写测试用例时,可能最费时间的就是编写那些将程序设置到使用状态和测试完毕之后将其再设置回初始状态的代码了。

PHPUnit提供了setUp和tearDown这两个方法来解决这个问题。

setUp会在类的每个测试用例运行之前被调用,可以在里面做一些相关的程序初始化的工作
tearDown方法则会在本类每个测试用例运行完毕之后调用,你可以在里面进行一些相关的清理工作
需要注意的是,不一定写了setUp就要对应写tearDown,tearDown里面用来回收那些占用资源比较大的对象,如连接上的数据库,打开的文件等等。

简单的演示setUp方法例子:


除了setUp和tearDown之外,phpUnit还提供了一些方法来实现更多的准备工作,请看下图:


以上代码测试的结果,如下:
 

phpunit TemplateMethodsTest
PHPUnit 3.5.13 by Sebastian Bergmann.

TemplateMethodsTest::setUpBeforeClass
TemplateMethodsTest::setUp
TemplateMethodsTest::assertPreConditions
TemplateMethodsTest::testOne
TemplateMethodsTest::assertPostConditions
TemplateMethodsTest::tearDown
.TemplateMethodsTest::setUp
TemplateMethodsTest::assertPreConditions
TemplateMethodsTest::testTwo
TemplateMethodsTest::tearDown
TemplateMethodsTest::onNotSuccessfulTest
FTemplateMethodsTest::tearDownAfterClass


Time: 0 seconds

There was 1 failure:

1) TemplateMethodsTest::testTwo
Failed asserting that <boolean:false> is true.
/home/sb/TemplateMethodsTest.php:30

FAILURES!
Tests: 2, Assertions: 2, Failures: 1.


    
[3]PHPUnit教程(五)PHPUnit参数详解
    来源: 互联网  发布时间: 2013-12-24

本节主要内容:
PHPUnit参数详解   

说明:本文直接翻译自PHPUnit官方文档,个人翻译水平有限,可能会存在某些词和意思翻译不准的地方,大家凑和看,呵呵。

    Runs the tests that are provided by the class UnitTest. This class is expected to be declared in the UnitTest.php sourcefile.
    UnitTest must be either a class that inherits from PHPUnit_Framework_TestCase or a class that provides a public static suite() method which returns an PHPUnit_Framework_Test object, for example an instance of the PHPUnit_Framework_TestSuite class.
    运行类UnitTest提供的所有测试,这个类需要定义在UnitTest.php这个文件中.
    类UnitTest需要从PHPUnit_Framework_TestCase继承或者提供一个公开的静态方法suite()返回一个PHPUnit_Framework_Test对象的实例.
   
phpunit UnitTest Test.php
    Runs the tests that are provided by the class UnitTest. This class is expected to be declared in the specified sourcefile.
    运行UnitTest提供的所有测试,这个类应该在定义在Test.php中
   
--log-junit

    Generates a logfile in JUnit XML format for the tests run.
    生成JUnit XML格式的日志文件

--log-tap

    Generates a logfile using the Test Anything Protocol (TAP) format for the tests run.
    生成TAP格式的日志文件
   
--log-dbus

    Log test execution using DBUS.
    使用DBUS记录测试的执行情况

--log-json

    Generates a logfile using the JSON format.
    生成JSON格式的日志文件
   
--coverage-html

    Generates a code coverage report in HTML format.
    生成html格式的代码覆盖报告

    Please note that this functionality is only available when the tokenizer and Xdebug extensions are installed.
    请注意这个功能只能在tokenizer和Xdebug安装后才能使用

--coverage-clover

    Generates a logfile in XML format with the code coverage information for the tests run.
    生成xml格式的代码覆盖报告

    Please note that this functionality is only available when the tokenizer and Xdebug extensions are installed.
    请注意这个功能只能在tokenizer和Xdebug安装后才能使用

--testdox-html and --testdox-text

    Generates agile documentation in HTML or plain text format for the tests that are run.
    生成记录已运行测试的html或者纯文本格式的文件文档

--filter

    Only runs tests whose name matches the given pattern. The pattern can be either the name of a single test or a regular expression that matches multiple test names.

    只运行名字符合参数规定的格式的测试,参数可以是一个测试的名字或者一个匹配多个测试名字的正则表达式

--group

    Only runs tests from the specified group(s). A test can be tagged as belonging to a group using the @group annotation.
    只运行规定的测试组,一个测试可以使用@group注释来分组
    The @author annotation is an alias for @group allowing to filter tests based on their authors.
    @author注视是一个和@group关联的注释标签,用来根据作者来过滤测试

--exclude-group

    Exclude tests from the specified group(s). A test can be tagged as belonging to a group using the @group annotation.
    只包含规定的多个测试组,一个测试可以使用@group注释来分组

--list-groups

    List available test groups.
    列出可用的测试组
   
--loader

    Specifies the PHPUnit_Runner_TestSuiteLoader implementation to use.
    定义使用PHPUnit_Runner_TestSuiteLoader的接口

    The standard test suite loader will look for the sourcefile in the current working directory and in each directory that is specified in PHP's include_path configuration directive. Following the PEAR Naming Conventions, a class name such as Project_Package_Class is mapped to the sourcefile name Project/Package/Class.php.
    标准的standard test suite loader会在当前的目录和php的include_path中根据PEAR的命名规则的类,一个叫做Project_Package_Class的类 会指向到文件Project/Package/Class.php
   
--repeat

    Repeatedly runs the test(s) the specified number of times.
    根据定义的数字重复运行测试
   
--tap

    Reports the test progress using the Test Anything Protocol (TAP).
    使用Test Anything Protocol格式报告测试进程
   
--testdox

    Reports the test progress as agile documentation.
    使用agile documentation格式报告测试进程

--colors

    Use colors in output.
    在输出结果中使用颜色

--stderr

    Optionally print to STDERR instead of STDOUT.
    使用STDERR替代STDOUT输出结果

--stop-on-error

    Stop execution upon first error.
    在遇到第一个错误时停止执行
   
--stop-on-failure

    Stop execution upon first error or failure.
    在遇到第一个失败时停止执行
   
--stop-on-skipped

    Stop execution upon first skipped test.
    在遇到第一个跳过的测试时停止执行


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3