我正在对phpunit中的报告进行一些速度比较,因为我试图找出一个优化问题。
我有一些不一定是测试的功能,但也不属于项目的功能。我正在使用它们,以使我的测试小而易读。我正在使用的函数使用我传递给它的参数执行cUrl操作。
所以,我正在运行两个Urls(一个项目的两个版本,一个是原始形式,另一个是优化),看看它们是否返回相同的文本。我不会在应用程序本身内执行此操作。我这样做是因为它比试图找出正确的函数调用更快,因为项目有点乱。
所以我有这样的测试:
public function testOne(){
$results = $this->testRange(13,1,2013,16,1,2013);
$this->assertEquals($results['opt'], $results['non_opt']);
}//tests
我的两个非测试功能:
protected function testRange($fromDay,
$fromMonth,
$fromYear,
$toDay,
$toMonth,
$toYear){
$this->params['periodFromDay'] = $fromDay;
$this->params['periodFromMonth'] = $fromMonth;
$this->params['periodFromYear'] = $fromYear;
$this->params['periodToDay'] = $toDay;
$this->params['periodToMonth'] = $toMonth;
$this->params['periodToYear'] = $toYear;
$this->data['from']=$fromDay."-".$fromMonth."-".$fromYear;
$this->data['to']=$toDay."-".$toMonth."-".$toYear;;
return $this->testRunner();
}//testOneDay
protected function testRunner(){
//include"test_bootstrap.php";
$response = array();
foreach($this->types as $key=>$type){
$params = http_build_query($this->params);
$url=$this->paths[$type];
$curl_url = $url."?".$params;
$ch = curl_init($curl_url);
$cookieFile = "tmp/cookie.txt";
if(!file_exists($cookieFile))
{
$fh = fopen($cookieFile, "w");
fwrite($fh, "");
fclose($fh);
}//if
curl_setopt($ch,CURLOPT_COOKIEFILE,$cookieFile);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookieFile);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result[$type] = curl_exec($ch);
$dump = "logs/report_results/".
$this->data['from']."_".
$this->data['to']."_".
$type.".txt";
$fh = fopen($dump, "w");
fwrite($fh, $result[$type]);
fclose($fh);
}//foreach
return $result;
}//testRunner
我想知道是否
答:可以在测试文件中编写函数,并让phpunit忽略它们,或者是否有更适合放置它们的地方。
B:有一种更明智的方式来处理这类事情。我喜欢这种方法,但我愿意接受建议。
答案 0 :(得分:4)
PHPUnit将忽略名称不以“test *”开头并且没有@Test注释的任何方法,因此可以随意将内容放入私有帮助函数中。