测试驱动开发

概述

   测试驱动开发(Test-driven development)是现代计算机软件开发方法的一种。利用
测试来驱动软件程序的设计和实现。测试驱动开始流行于20世纪90年代。测试驱动开发是极限
编程中倡导的程序开发方法,方法主要是先写测试程序,然后再编码使其通过测试。测试驱
动开发的目的是取得快速反馈并使用“illustrate the main line”方法来构建程序。测试
驱动开发的比喻。开发可以从两个方面去看待:实现的功能和质量。测试驱动开发更像两顶
帽子思考法的开发方式,先戴上实现功能的帽子,在测试的辅助下,快速实现正确的功能;
再戴上重构的帽子,在测试的保护下,通过去除冗余和重复的代码,提高代码重用性,实现
对质量的改进。可见测试在测试驱动开发中确实属于核心地位,贯穿了开发的始终。

在Ecos中如何测试驱动开发

  • 主要针对model和lib
  • 在开发之前先根据需要定义好边界, 入参及返回参数. 根据场景预先开发测试用例
  • 内置的自动测试工具类为 PHPunit, 版本为3.0.0

如何写测试用例

放置位置app/{$app_id}/testcase/{$test_case_name}.php

  • 需要继承PHPUnit_Framework_TestCase类
  • 每一个测试方法以test作为前缀, 例如: 函数testGoodsType
  • 当开始对一个方法进行测试时, 会先调用setUP
  • 测试函数: assertEquals/assertEmpty/assertGreaterThan 等等

例子1:

app/myapp/testcase/{$test_case_name}.php

<?php
class test extends PHPUnit_Framework_TestCase
{
    protected 
$app;

    public function 
setUp() {
        
$this->app app::get('base');
    }

    public function 
test_setconf()
    {
        
$this->assertEquals($this->app->setConf('test_test'10), true);
    }

    public function 
test_getconf()
    {
        
$this->assertEquals($this->app->getConf('test_test'10), 10);
    }

    public function 
testFailure3()
    {
        
$this->assertEquals("foo\nbar\nbaz\n""foo\nbah\nbaz\n");
    }
}

如何进行测试

首先要保证系统已经安装dev app. 然后使用命令行工具进行测试

使用方法: cmd dev:test do app的id 测试文件名
例子: dev:test do dev sample.php

例子2: 代码见例子1

bryant@forsky /var/www/ecstore/app/base %> ./cmd dev:test do myapp test.php

--  test  --------------------------------------------------------------
PHPUnit 3.1.3 by Sebastian Bergmann.

..F

Time: 0 seconds

There was 1 failure:

1) testFailure3(test)
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ -1,3 +1,3 @@
 foo
-bar
+bah
 baz

/Users/bryant/codes/ecos2/app/myapp/testcase/test.php:22
/Users/bryant/codes/ecos2/app/dev/lib/command/test.php:27
/Users/bryant/codes/ecos2/app/base/lib/shell/prototype.php:103
/Users/bryant/codes/ecos2/app/base/lib/shell/loader.php:222
/Users/bryant/codes/ecos2/app/base/lib/shell/loader.php:199
/Users/bryant/codes/ecos2/app/base/lib/shell/loader.php:54
/Users/bryant/codes/ecos2/app/base/cmd:55

FAILURES!
Tests: 3, Failures: 1.

內容目录

上一个主题

新版定时任务

下一个主题

常用类库

快速搜索

输入相关的模块,术语,类或者函数名称进行搜索