如何对Joomla 2.5组件进行单元测试

有人能提供一个如何对Joomla 2.5组件进行单元测试的示例吗?我正在研究这个joomla mvc组件示例,它不包括单元测试,我在任何地方都找不到完整的示例。我的主要问题是:

  • 在哪里放置组件测试代码
  • 如何运行组件单元测试
  • 我的测试代码正确吗

Joomla文档似乎不完整且支离破碎——我已经阅读了关于单元测试的内容(由于rep低,无法发布链接),这些内容似乎是关于测试Joomla本身,而不是测试扩展。我发现最接近的是这个,我的虚拟测试就是基于这个

到目前为止我做了什么

组件目录结构:

  • 地狱世界/
    • 管理员/
      • 测验/
        • bootstrap.php
        • phpunit.xml
        • modelHelloWorldsTest.php
    • 场地/
    • helloworld.xml

为了运行测试,我将组件安装/复制到Joomla安装中。然后,我从~joomla/administration/components/com_helloworld/tests运行以下命令:

php phpunit-4.2.phar——bootstrap bootstrap.php。

我从中得到

致命错误:在第5行的C:\inetpub\wwwroot\ws\u cairnstest\administrator\components\com\u helloworld\tests\modelsHelloWorldsTest.php中找不到类“ContentController”

bootstrap.php:

<?php
错误报告(E_全部);
定义(1);
定义('BASEPATH',realpath(dirname(_文件).'/../../');
定义('JOOMLA_PATH',realpath(dirname(_FILE__)。'/../../../../../);
定义('JOOMLA_ADMIN_PATH',realpath(dirname(_FILE__)。'/../../../../);
$\u服务器['HTTP\u主机]='localhost';
$\u服务器['REQUEST\u METHOD']='GET';
如果(文件_存在(JOOMLA_ADMIN_PATH.'/defines.php'))
{
包括_once JOOMLA_ADMIN_PATH'/defines.php';
}
如果(!已定义(“\u JDEFINES”))
{
定义('JPATH_BASE',JOOMLA_ADMIN_PATH);
require_once JPATH_BASE.'/includes/defines.php';
}
需要一次JPATH_基地。”/包括/framework.php';
需要一次JPATH_基地。”/包括/helper.php';
需要一次JPATH_基地。”/包括/toolbar.php';
定义('JPATH_COMPONENT',JOOMLA_ADMIN_PATH.'/components/com_content');
$app=JFactory::getApplication('administrator');
包括BASEPATH'/controller.php';

modelsHelloWorldsTest.php:

<?php
类HelloWorldsTest扩展\PHPUnit\u框架\u测试用例{
公共函数testList(){
$c=新的ContentController();
$model=$c->getModel('helloworlds');
$worlds=$model->getItems();
var_dump($worlds);
$this->资产notempty($worlds);
}
}

phpunit.xml:

<phpunit bootstrap=“bootstrap.php”
colors=“true”
convertErrorsToExceptions=“true”
convertNoticesToExceptions=“true”
ConvertingWarningsToExceptions=“true”
processIsolation=“false”
stopOnFailure=“false”
syntaxCheck=“false”
verbose=“true”>
&lt/phpunit>

Joomla的单元测试通常是使用PHP单元框架编写的

回答你的问题
组件测试代码的放置位置:在回购协议的顶层,如下所示

组件repo目录结构:

  • src
    • 管理员/
    • 场地/
  • 测验

如何运行组件单元测试:测试执行遵循以下模式

vendor/bin/phpunit——配置phpunit.xml

其他详细信息可以在php单元文档中找到https://phpunit.de/documentation.html

测试代码是否正确:

无法使用getMockBuilder()模拟类和方法进行测试

下面是一些例子

  • https://github.com/joomla-framework/database
  • https://github.com/joomla-extensions/weblinks

发表评论