采用SimpleTest进行PHP单元测试

来源:互联网 发布:一个人的车站知乎 编辑:程序博客网 时间:2024/05/16 12:07

SimpleTest : http://simpletest.org/index.html

 

文件操作类 file.class.php

  1. <?php
  2. class File
  3. {
  4.     var $filename;
  5.     
  6.     function File($file)
  7.     {
  8.         if (emptyempty($file)) {
  9.             die('Filename should not be empty');
  10.         }
  11.         
  12.         $this->filename = $file;
  13.         
  14.         if (!$this->exists() && !$this->create())   die('Unable to find / create the file');
  15.     }
  16.     
  17.     function exists()
  18.     {
  19.         return file_exists($this->filename);
  20.     }
  21.     
  22.     function create()
  23.     {
  24.         if ($this->exists())    return true;
  25.         return $this->putContents(null);
  26.     }
  27.     
  28.     function getContents()
  29.     {
  30.         return @file_get_contents($this->filename);
  31.     }
  32.     
  33.     function putContents($content)
  34.     {
  35.         $fp = @fopen($this->filename, 'wb');
  36.         $write = @fwrite($fp$content);
  37.         @fclose($fp);
  38.         
  39.         return !($write === false);
  40.     }
  41.     
  42.     function append($content)
  43.     {
  44.         $fp = @fopen($this->filename, 'ab');
  45.         $append = @fwrite($fp$content);
  46.         @fclose($fp);
  47.         
  48.         return !($append === false);
  49.     }
  50.     
  51.     function delete()
  52.     {
  53.         return @unlink($this->filename);
  54.     }
  55. }
  56. ?>

单元测试类 fileTest.php

  1. <?php
  2. //include_once '../simpletest/unit_tester.php';
  3. //include_once '../simpletest/reporter.php';
  4. include_once('../simpletest/autorun.php');
  5. include_once 'file.class.php';
  6. class fileTest extends UnitTestCase
  7. {
  8.     var $file;
  9.     var $filename;
  10.     
  11.     function fileTest($filename)
  12.     {
  13.         $this->filename = $filename;
  14.         $this->file = new File($this->filename);
  15.         $this->UnitTestCase('File Manipulation Test');
  16.     }
  17.     
  18.     /**
  19.      * 描述:该函数将会在每次测试开始前自动调用,
  20.      * 在编写测试类的时候,是个可选函数,可写不可不写
  21.      */                             
  22.     function setUp()
  23.     {
  24.         $fp = @fopen($this->filename, 'x');
  25.         if (!($fp == false)) {
  26.             fwrite($fp'');
  27.             fclose($fp);
  28.         }
  29.     }
  30.     
  31.     /**
  32.      * 描述:该函数将会在每次测试结束后自动调用,
  33.      * 在编写测试类的时候,是个可选函数,可写不可不写
  34.      */  
  35.     function tearDown()
  36.     {
  37.         @unlink($this->filename);
  38.     }
  39.     
  40.     function testFileExists()
  41.     {
  42.         $this->assertTrue($this->file->exists());
  43.         clearstatcache();
  44.         $this->assertTrue(file_exists($this->file->filename));
  45.     }
  46.     
  47.     function testCreate()
  48.     {
  49.         $this->tearDown();
  50.         $this->assertFalse(file_exists($this->file->filename));
  51.         clearstatcache();
  52.         
  53.         $this->assertTrue($this->file->create());
  54.         $this->assertTrue(file_exists($this->file->filename));
  55.     }
  56.     
  57.     function testReadWrite()
  58.     {
  59.         $contents = 'content';
  60.         $this->assertTrue($this->file->putContents($contents));
  61.         $this->assertEqual($this->file->getContents(), $contents);
  62.     }
  63.     
  64.     function testAppend()
  65.     {
  66.         $this->file->putContents('SimpleTest');
  67.         $this->assertTrue($this->file->append('NeverMind'));
  68.         $this->assertWantedPattern('~nevermind$~i'$this->file->getContents());
  69.     }
  70.     
  71.     function testDelete()
  72.     {
  73.         $this->assertTrue($this->file->delete());
  74.         $this->assertFalse(file_exists($this->filename));
  75.     }
  76. }
  77. $test = new fileTest('test.txt');
  78. $test->run(new HtmlReporter());
  79. ?>