1

最適化の問題を解明しようとしているので、phpunit でレポート間の速度比較を行っています。

必ずしもテストではない関数がいくつかありますが、プロジェクトの機能にも属していません。テストを小さく読みやすくするためにそれらを使用しています。私が使用している関数は、渡したパラメーターを使用して cUrl 操作を行います。

そのため、2 つの URL (プロジェクトの 2 つのバージョン、元の形式のプロジェクトと最適化されたバージョン) を実行し、それらが互いに等しいテキストを返すかどうかを確認しています。アプリ自体でこれを行うことはありません。プロジェクトが少し面倒なので、正しい関数呼び出しを見つけようとするよりも速いので、これを行っています。

だから私はこのようなテストを持っています:

public function testOne(){

    $results = $this->testRange(13,1,2013,16,1,2013);
    $this->assertEquals($results['opt'], $results['non_opt']);

}//tests

そして、私の2つの非テスト関数:

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

私は疑問に思っています

A: テスト ファイルに関数を記述し、phpunit にそれらを無視させるか、または配置するより適切な場所があれば可能です。

B: この種のことを処理するためのより賢明な方法があります。私はこのアプローチが好きですが、提案は受け付けています。

4

1 に答える 1

7

PHPUnit は、名前が「test*」で始まらず、@Test アノテーションを持たないメソッドを無視します。

于 2013-06-11T11:03:22.900 に答える