科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件代码覆盖率分析

代码覆盖率分析

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

PHPUnit的代码覆盖率分析应用了Xdebug[6]扩展提供的语句覆盖率功能。

作者:三默 来源:CSDN 2008年1月28日

关键字: 分析 覆盖率 代码 Linux

  • 评论
  • 分享微博
  • 分享邮件

第十章 代码覆盖率分析

你已经学会了怎么使用单元测试代码,但你怎么测试你的测试呢?你怎么发现没被测试的代码,换句话说,没被测试覆盖的代码?怎么衡量测试的完整性?所有这些问题的答案就是代码覆盖率分析。代码覆盖率分析告诉你当测试进行时,那些产品代码执行过了。

 

PHPUnit的代码覆盖率分析应用了Xdebug[6]扩展提供的语句覆盖率功能。 什么时语句覆盖率?举个例子来说,如果有一个方法有100个代码行,在测试进行时,只有75行真正运行了,这个方法的语句覆盖率就是75%。

 

[6] http://www.xdebug.org/

图1

 

1 显示了BankAccount(参见例12)的代码覆盖率报告。此HTML格式的报告是由PHPUnit命令行测试运行器生成的,使用--coverage-html选项。 黑字部分表示可执行的代码,灰字部分表示不可执行的代码,高亮代码行部分表示执行过的代码。

1-1. BankAccount类没有被测试完全覆盖。

 

此代码覆盖率报告表示,我们要增加代码覆盖率的话,就需要增加setBalance()depositMoney()withdrawMoney()的测试,并使用合法的值。例14 显示了如何增加BankAccountTest类的测试用例来提高BankAccount类的代码覆盖率。

14.用测试覆盖BankAccount

<?php

require_once 'PHPUnit2/Framework/TestCase.php';

require_once 'BankAccount.php';

 

class BankAccountTest extends PHPUnit2_Framework_TestCase {

// …

 

public function testSetBalance( ) {

    $this->ba->setBalance(1);

    $this->assertEquals(1, $this->ba->getBalance( ));

  }

 

  public function testDepositAndWidthdrawMoney( ) {

    $this->ba->depositMoney(1);   

    $this->assertEquals(1, $this->ba->getBalance( ));

 

    $this->ba->withdrawMoney(1);

    $this->assertEquals(0, $this->ba->getBalance( ));

  }

}

?>

 

见图2,我们看到类BankAccount已经被测试完全覆盖了。

图2

1-2

在本书后“PHPUnit Phing”一章中,你将学会怎么使用Phing生成更加详细的代码覆盖率报告。

 

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章