আমি স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি জিজ্ঞাসা করেছি এবং এটি এখানে জিজ্ঞাসা করার পরামর্শ দেওয়া হয়েছিল।
আমি ইউনিট / সিস্টেম / ইন্টিগ্রেশন পরীক্ষার সাথে পরিচিত, এবং আমার জুমলা উপাদানটি পরীক্ষা করতে সক্ষম হতে চাই। এটি করার কোনও মানক উপায় আছে?
আমি এই জুমলা এমভিসি উপাদান উদাহরণ দিয়ে কাজ করছি , যা পরীক্ষাগুলি অন্তর্ভুক্ত করে না। জুমলা ডকুমেন্টেশনে এবং বিভিন্ন ওয়েবসাইটে আমি যেগুলি খুঁজে পেতে পারি তা হ'ল পরীক্ষার কোড এবং বুটস্ট্র্যাপ.এফপি ফাইলগুলির টুকরো। বিশেষত আমি যা জানতে চাই তা হ'ল:
- উপাদান পরীক্ষার কোডটি কোথায় রাখবেন
- আমাকে কী আমার নিজের বুটস্ট্র্যাপ.এফপি সরবরাহ করতে হবে, বা 'জুমলা অন্তর্ভুক্ত করা' এবং আমার পরীক্ষা চালানোর কোনও উপায় আছে?
আদর্শভাবে কেউ আমাকে একটি ওপেন সোর্স জুমলা অংশের দিকে পরিচালিত করতে পারে যার পরীক্ষা ও নির্দেশাবলী রয়েছে কীভাবে সেগুলি চালাবেন (প্রথম দিকে তাত্ক্ষণিক দৃষ্টি আকর্ষণ করা হয়েছিল, পরীক্ষাও হয়নি)।
নিকটস্থ আমি করেছি পাওয়া যায় এই , যা আমি আমার ডামি পরীক্ষা ভিত্তিক গেছেন।
আমি এ পর্যন্ত কি করেছি
উপাদান ডিরেক্টরি কাঠামো:
- ওহে বিশ্ব/
- অ্যাডমিন/
- ...
- পরীক্ষা /
- bootstrap.php
- phpunit.xml
- modelHelloWorldsTest.php
- সাইট /
- ...
- helloworld.xml
- অ্যাডমিন/
প্রথম প্রচেষ্টা
পরীক্ষা চালানোর জন্য, আমি আমার জুমলা ইনস্টলেশনটিতে উপাদানটি ইনস্টল / অনুলিপি করি। আমি তারপরে ~ জুমলা / প্রশাসন / উপাদানগুলি / কম_হেলিওল্ড / পরীক্ষাগুলি থেকে নিম্নলিখিত কমান্ডটি চালাচ্ছি:
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';
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 তাদের যথাযথ স্থানে রেখেছি, এবং এখনও পেয়েছি
Fatal error: Class 'ContentController' not found in C:\inetpub\wwwroot\ws_cairnstest\administrator\components\com_helloworld\tests\modelsHelloWorldsTest.php on line 5
ত্রুটি আমি আগে পেয়েছিলাম।