全球领先的IT技术网站 |首页 |Tags |网站地图

您现在正在浏览:首页 » 开发频道 » 语言&工具 » Web » PHP » 如何配置一个 Docker 化持续集成的 PHP 开发环境(四)

RSS订阅

如何配置一个 Docker 化持续集成的 PHP 开发环境(四)

暂无Tags标签
摘要:

 目标:我们将为之前创建的 PHP + MySQL 应用,编写测试代码和创建持续集成环境。

本项目代码维护在 DaoCloud/php-apache-mysql-sample 项目中。

利用 PHPUnit 编写单元测试(本地)

使用以下命令安装 PHPUnit 4.0:

composer global require "phpunit/phpunit=~4.0"   

假设我们的工程包含两个文件,一个源代码文件 Cal.php 和一个测试代码文件 CalTest.php

<?php   // Cal.php  class Calculator{       function add($p1,$p2)     {         return $p1+$p2;     } } 
<?php   // CalTest.php  require_once("Cal.php");   class CalTest extends PHPUnit_Framework_TestCase   {     public $cal;     function setUp()     {         $this->cal = new Calculator();     }     function tearDown() {         unset($this->cal);     }     function testadd1()     {         $result = $this->cal->add(1,1);         $this->assertEquals($result,2);     }     function testadd2()     {         $result = $this->cal->add(100,-50);         $this->assertTrue($result == 50);     } } 

使用以下命令来启动测试:

phpunit CalTest   

利用 DaoCloud 配置持续集成环境(云端)

当我们写完测试代码之后,我们需要一个持续集成环境来自动执行测试,报告项目的健康状况。这里我们使用 DaoCloud 云端的持续集成能力来为我们的 PHP + MySQL 应用配置持续集成环境。

我们只需要在源代码的根目录放置 daocloud.yml 文件便可以接入 DaoCloud 持续集成系统,每一次源代码的变更都会触发一次 DaoCloud 持续集成。关于 daocloud.yml 的格式,请参考 这里

以下是我们为 PHP + MySQL 应用编写的测试代码和 daocloud.yml

<?php   // DBTest.php  require_once("DB.php");   class DBTest extends PHPUnit_Framework_TestCase   {     public $db;     function setUp()     {         $this->db = new DB();     }     function tearDown() {         unset($this->db);     }     function exist($name, $phone) {         $contacts = $this->db->all();         foreach ($contacts as $index => $contact) {             if ($contact['name'] == $name && $contact['phone'] == $phone) {                 return true;             }         }         return false;     }     function total() {         return count($this->db->all());     }     function test001()     {         $this->db->add("abc", "123");         $this->assertTrue($this->exist("abc", "123"));     }     function test002()     {         $pre = $this->total();         $this->db->add("bcd", "1234");         $post = $this->total();         $this->assertTrue($post - $pre == 1);     } } 
# daocloud.yml image: daocloud.io/ci-php:5.5  services:     - mysql  env:     - MYSQL_USERNAME = "root"   - MYSQL_PASSWORD = ""   - MYSQL_INSTANCE_NAME = "test"  install:     - docker-php-ext-install pdo_mysql  script:     - phpunit DBTest

0 »

开发专题

JavaScript成为网络霸主的“绯闻”
JavaScript成为网络霸主的“绯闻”

JavaScript正凭借新型工具与功能提升以极度夸张的速度吞噬整个世界。我们是否应该接受这一无法逆转的趋势? 还记得那些旧日往事吗?很多用户因为担心安全问题而在浏览器中禁用JavaScript。如...

C++是垃圾语言?!
C++是垃圾语言?!

Linux之父对C++进行了炮轰,说它是糟糕程序员的垃圾语言,可谓是一石激起千层浪,引起众多程序员朋友的关注和讨论。本专题给出正反方的讨论观点,供大家评说!另外,给出了编程语言的发展状况...

MySQL数据库入门与精通
MySQL数据库入门与精通

MySQL是一个跨平台的开源关系型数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低...

最新资讯

热点文章

  • 24小时
  • 一周
  • 本月

相关热门文章

  • 本文暂无Tags标签