2010-10-11 64 views
0

我有一个运行在命令行的PHP脚本,执行已经使用PHPUnit进行单元测试的类。集成测试命令行PHP

不过,我想验证脚本本身没有逻辑错误和正常运行。

// require classes 
require_once 'injectedClass.php'; 
require_once 'DBClass.php'; 
require_once 'taskEngine.php'; 

$injectedObj = new injectedClass; 
$dbObj = new DBClass; 

$taskRunner = new taskEngine($injectedObj, $dbObj); 

$taskRunner->task1()->task2(); 

$taskRunner->finish(); 

//etc 

更新的解决方案

这是因为djechelon的回答提出的简单,我得太多了它。解决方案是创建一个PHPUnit测试并预先分配传递给taskRunner的变量来模拟对象。在现场脚本,创建真正的对象之前简单的检查允许用于测试和生产相同的脚本:

测试:

$injectedObj = $this->getMock('injectedClass'); 
$dbObj = $this->getMock('DBClass'); 

require_once '/path/to/live/script.php'; 

$this->assertTrue($taskRunner->finished); 

脚本:

// require classes 

if(!isset($injectedObj)) { 
    $injectedObj = new injectedClass; 
} 
if(!isset($dbObj)) { 
    $dbObj = new DBClass; 
} 

$taskRunner = new taskEngine($injectedObj, $dbObj); 

// run tasks 

回答

1

你能不能为您的脚本创建一个PHPUnit测试?

您可以手工执行集成测试,创建一个脚本,该脚本使用一组给定的输入参数运行脚本,并将其输出与您所期望的相比较。

谨防鸡和蛋的问题:你的测试脚本不能由一个测试平台本身测试...

反正我不知道你需要测试你的脚本,如果它是如此简单。一些手动运行可能就足够了...

+0

我想我没有描述我的问题非常正确,我更新了问题。 – 2010-10-12 00:19:55