PHPUnit测试套件不起作用

时间:2015-02-12 14:03:51

标签: php testing phpunit typo3 extbase

这是必须使用PHPUnit Test

进行测试的方法
public function newAction(\ReRe\Rere\Domain\Model\Modul $newModul = NULL) {
    if ($this->request->hasArgument(self::RETURNMODUL)) {
        $this->view->assignMultiple(array(self::MODULNAME => $this->request->getArgument(self::RETURNMODUL),
            self::MODULNUMMER => $this->request->getArgument(self::MODULNUMMER),
            self::GUELTIGKEITSZEITRAUM => $this->request->getArgument(self::GUELTIGKEITSZEITRAUM),
            self::FACHNAME => $this->request->getArgument(self::FACHNAME),
            self::FACHNUMMER => $this->request->getArgument(self::FACHNUMMER),
            self::PRUEFER => $this->request->getArgument(self::PRUEFER)));
    } else {
        $this->view->assignMultiple(array('newModul' => $newModul, self::GUELTIGKEITSZEITRAUM => $this->request->getArgument(self::GUELTIGKEITSZEITRAUM)));
    }
}

以下代码是从PHPUnit Test Suite自动创建的

public function newActionAssignsTheGivenModulToView() {
    $modul = new \ReRe\Rere\Domain\Model\Modul();

    $view = $this->getMock(self::VIEWINTERFACE);
    $view->expects($this->once())->method(self::ASSIGN)->with('newModul', $modul);
    $this->inject($this->subject, 'view', $view);

    $this->subject->newAction($modul);
}

但它只是不起作用。 PHPUnit没有显示任何评论,为什么测试代码不起作用..我真的需要一些帮助,因为我不具备PHPUnit Test中的单一知识,所以每个帮助都会非常受欢迎。

2 个答案:

答案 0 :(得分:0)

PHPUnit在类中找到带有后缀“Test”的测试,测试用例是带有前缀“test”的公共方法,正如您在documentationorganizing tests

中看到的那样
  

注意如果将PHPUnit命令行测试运行器指向目录   它会查找* Test.php文件。

尝试

class ActionTest extends PHPUnit_Framework_TestCase
{

    public function testNewAction(\ReRe\Rere\Domain\Model\Modul $newModul = NULL) 
    {
        if ($this->request->hasArgument(self::RETURNMODUL)) {
            $this->view->assignMultiple(array(self::MODULNAME => $this->request->getArgument(self::RETURNMODUL),
            self::MODULNUMMER => $this->request->getArgument(self::MODULNUMMER),
            self::GUELTIGKEITSZEITRAUM => $this->request->getArgument(self::GUELTIGKEITSZEITRAUM),
            self::FACHNAME => $this->request->getArgument(self::FACHNAME),
            self::FACHNUMMER => $this->request->getArgument(self::FACHNUMMER),
            self::PRUEFER => $this->request->getArgument(self::PRUEFER)));
        } else {
            $this->view->assignMultiple(array('newModul' => $newModul, self::GUELTIGKEITSZEITRAUM => $this->request->getArgument(self::GUELTIGKEITSZEITRAUM)));
        }
    }
}

答案 1 :(得分:0)

或者,您可以在test-method之前加上php注释和@test注释。这样,该方法可以保持其任意名称,并且不需要以“test”为前缀。

/**
* @test
*/
public function newActionAssignsTheGivenModulToView() {
    ///...
}