मैंने StackOverflow पर यह प्रश्न पूछा है , और यह सुझाव दिया गया था कि मैं इसे यहाँ पूछता हूँ।
मैं इकाई / प्रणाली / एकीकरण परीक्षण से परिचित हूं, और अपने जूमला घटक का परीक्षण करने में सक्षम होना चाहूंगा। क्या ऐसा करने का एक मानक तरीका है?
मैं इस जूमला पीवीसी घटक उदाहरण के माध्यम से काम कर रहा हूं , जिसमें परीक्षण शामिल नहीं हैं। सभी मुझे जूमला प्रलेखन में और विभिन्न वेबसाइटों पर परीक्षण कोड और बूटस्ट्रैप.php फ़ाइलों के टुकड़े मिल सकते हैं। विशेष रूप से मैं जो जानना चाहता हूं वह है:
- घटक परीक्षण कोड कहां रखा जाए
- क्या मुझे अपना स्वयं का बूटस्ट्रैप देने की जरूरत है। एफपी, या सिर्फ 'जूमला शामिल करें' और अपने परीक्षण चलाने का कोई तरीका है
आदर्श रूप से कोई मुझे एक ओपन सोर्स जूमला घटक के लिए निर्देशित कर सकता है जिसमें उन्हें चलाने के लिए परीक्षण और निर्देश हैं (एक त्वरित नज़र, पहले 5 या तो परीक्षण नहीं थे)।
निकटतम मैंने पाया जाता है यह , जो मैं पर मेरे डमी परीक्षण आधारित है।
मैंने अब तक क्या किया है
घटक निर्देशिका संरचना:
- नमस्ते दुनिया/
- व्यवस्थापक/
- ...
- परीक्षण /
- bootstrap.php
- phpunit.xml
- modelHelloWorldsTest.php
- साइट /
- ...
- helloworld.xml
- व्यवस्थापक/
पहला प्रयास
परीक्षण चलाने के लिए, मैं अपने जूमला इंस्टॉलेशन के घटक को स्थापित / कॉपी करता हूं। फिर मैं ~ joomla / प्रशासन / घटकों / com_helloworld / परीक्षणों से निम्नलिखित कमांड चलाता हूं:
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
मेरा यह मतलब है कि मेरा बूटस्ट्रैप.php सही नहीं है और आवश्यक जूमला कक्षाओं को लोड नहीं किया है। मैं कुछ बिंदु पर इसकी जांच करूँगा, लेकिन यह बहुत सेटअप की तरह लगता है कि बस चलाने के लिए कुछ परीक्षण प्राप्त करने के लिए।
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>
दूसरा प्रयास
इस उत्तर को देखने के बाद , मैंने अपने परीक्षण को अपने जूमला इंस्टालेशन के तहत टेस्ट / यूनिट में रखा, कॉपी की गई phpunit.dist.xml और bootstrap.php को joomla-cms repo से उनके उपयुक्त स्थानों पर भेजा, और फिर भी मिला
Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5
त्रुटि मुझे पहले मिल रही थी।