我正在尝试创建我的第一个单元测试。我使用Zend Studio,并通过转到:
将phpUnit库添加到我的项目中 Project -> Properties -> Add Library
当我将其作为PHP单元测试运行时,我收到以下错误:
Unable to run a PHPUnit session. Only PHPUNIT classes can be run as PHPUnit tests. Reason: Not tests found in IndexControllerTest.php
IndexControllerTest.php:
<?php
require_once 'application\controllers\IndexController.php';
require_once 'PHPUnit\Framework\TestCase.php';
/**
* IndexController test case.
*/
class IndexControllerTest extends PHPUnit_Framework_TestCase
{
/**
* @var IndexController
*/
private $IndexController;
/**
* Prepares the environment before running a test.
*/
protected function setUp ()
{
parent::setUp();
// TODO Auto-generated IndexControllerTest::setUp()
$this->IndexController = new IndexController(/* parameters */);
}
/**
* Cleans up the environment after running a test.
*/
protected function tearDown ()
{
// TODO Auto-generated IndexControllerTest::tearDown()
$this->IndexController = null;
parent::tearDown();
}
/**
* Constructs the test case.
*/
public function __construct ()
{
// TODO Auto-generated constructor
}
/**
* Tests IndexController->init()
*/
public function testInit ()
{
// TODO Auto-generated IndexControllerTest->testInit()
$this->markTestIncomplete("init test not implemented");
$this->IndexController->init(/* parameters */);
}
/**
* Tests IndexController->indexAction()
*/
public function testIndexAction ()
{
// TODO Auto-generated IndexControllerTest->testIndexAction()
$this->markTestIncomplete("indexAction test not implemented");
$this->IndexController->indexAction(/* parameters */);
}
}
我该如何解决?
答案 0 :(得分:3)
您必须删除测试用例的__construct()
方法。 PHPUnit将参数传递给构造函数,因此您必须将它们传递给parent::__construct()
或者 - 更可能 - 完全删除构造函数。
此外,如果您正在使用Zend Framework并测试Zend_Controller_Action
类,您可能需要考虑使用Zend_Test_PHPUnit_ControllerTestCase
,因为它为您提供了大量的脚手架。请注意,每个测试都将从直接路径到达渲染内容,这些内容可能不够精细,无法满足您的需求。这不是我们的,所以我分别为控制器和视图创建了基础测试用例类。