StackOverflow 에서이 질문을 했으며 여기에서 묻는 것이 좋습니다.
단위 / 시스템 / 통합 테스트에 익숙하며 Joomla 구성 요소를 테스트하고 싶습니다. 이 작업을 수행하는 표준 방법이 있습니까?
테스트를 포함하지 않는 이 joomla mvc 구성 요소 예제를 통해 작업하고 있습니다. Joomla 문서와 다양한 웹 사이트에서 찾을 수있는 것은 테스트 코드 및 bootstrap.php 파일의 조각입니다. 구체적으로 알고 싶은 것은 :
- 구성 요소 테스트 코드를 넣을 위치
- 내 자신의 bootstrap.php를 제공해야합니까, 아니면 'joomla를 포함'하고 테스트를 실행하는 방법이 있습니까
이상적으로 누군가 나를 오픈 소스 Joomla 구성 요소로 안내 할 수 있습니다.이 구성 요소를 실행하는 방법에 대한 테스트 및 지침이 있습니다.
내가 찾은 가장 가까운 것은 이것 입니다. 내 더미 테스트를 기반으로했습니다.
내가 지금까지 한 일
구성 요소 디렉토리 구조 :
- helloworld /
- 관리자/
- ...
- 테스트 /
- bootstrap.php
- phpunit.xml
- modelHelloWorldsTest.php
- 대지/
- ...
- helloworld.xml
- 관리자/
첫번째 시도
테스트를 실행하려면 구성 요소를 Joomla 설치에 설치 / 복사합니다. 그런 다음 ~ joomla / administration / components / com_helloworld / tests에서 다음 명령을 실행합니다.
php phpunit-4.2.phar --bootstrap bootstrap.php .
내가받는 곳
Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5
나는 이것이 bootstrap.php가 정확하지 않고 필요한 Joomla 클래스를로드하지 않았다는 것을 의미합니다. 나는 이것을 어느 시점에서 조사 할 것이지만 이것은 테스트를 실행하기위한 많은 설정처럼 보입니다.
bootstrap.php :
<?php
error_reporting(E_ALL);
define('_JEXEC', 1);
define('BASEPATH',realpath(dirname(__FILE__).'/../../'));
define('JOOMLA_PATH',realpath(dirname(__FILE__).'/../../../../../'));
define('JOOMLA_ADMIN_PATH',realpath(dirname(__FILE__).'/../../../../'));
$_SERVER['HTTP_HOST'] = 'localhost';
$_SERVER['REQUEST_METHOD'] = 'GET';
if (file_exists(JOOMLA_ADMIN_PATH . '/defines.php'))
{
include_once JOOMLA_ADMIN_PATH . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', JOOMLA_ADMIN_PATH);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
require_once JPATH_BASE . '/includes/helper.php';
require_once JPATH_BASE . '/includes/toolbar.php';
define('JPATH_COMPONENT',JOOMLA_ADMIN_PATH.'/components/com_content');
$app = JFactory::getApplication('administrator');
include BASEPATH.'/controller.php';
modelsHelloWorldsTest.php :
<?php
class HelloWorldsTest extends \PHPUnit_Framework_TestCase {
public function testList(){
$c = new ContentController();
$model = $c->getModel('helloworlds');
$worlds = $model->getItems();
var_dump($worlds);
$this->assertNotEmpty($worlds);
}
}
phpunit.xml :
<phpunit bootstrap="bootstrap.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
verbose="true">
</phpunit>
두 번째 시도
이 답변 을 본 후 , 테스트를 내 joomla 설치에서 테스트 / 단위로 설정하고 phpunit.dist.xml 및 bootstrap.php를 joomla-cms 저장소에서 적절한 위치로 복사했지만 여전히
Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5
내가 전에받은 오류.