有人能提供一个如何对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”>;
</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