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

Php 如何对Joomla 2.5组件进行单元测试,php,unit-testing,joomla,joomla2.5,Php,Unit Testing,Joomla,Joomla2.5,有人能提供一个如何对Joomla 2.5组件进行单元测试的示例吗?我正在研究,它不包括单元测试,我在任何地方都找不到完整的示例。我的主要问题是: 在哪里放置组件测试代码 如何运行组件单元测试 我的测试代码正确吗 Joomla文档似乎不完整且支离破碎——我已经阅读了关于单元测试的内容(由于rep低,无法发布链接),这些内容似乎是关于测试Joomla本身,而不是测试扩展。我找到的最接近的是,这是我虚拟测试的基础 到目前为止我做了什么 组件目录结构: 地狱世界/ 管理员/ 测验/ boo

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

  • 在哪里放置组件测试代码
  • 如何运行组件单元测试
  • 我的测试代码正确吗
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 .
我从中得到

Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5
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';

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

回答你的问题 将组件测试代码放在何处:在回购的顶层,如下所示

组件repo目录结构:

  • src
    • 管理员/
    • 场地/
  • 测验
如何运行组件单元测试:测试执行遵循以下模式

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

其他详细信息可以在php单元文档中找到

您的测试代码正确吗:否

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

下面是一些例子


这个问题是关于Joomla特定实施细节的,如果您尝试询问Done(),可能会得到更好的结果。
<?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 bootstrap="bootstrap.php"
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    processIsolation="false"
    stopOnFailure="false"
    syntaxCheck="false"
    verbose="true">
</phpunit>