কীভাবে পিএইচপিউনিট পরীক্ষা চালাতে হবে?


12

ড্রুপাল 8 পিএইচপিউনিটের সাথে সিমপ্লেস্টেস্টের উপর ভিত্তি করে পরীক্ষার কাঠামোর পরিপূরক করছে এবং ড্রুপাল 9-এ সিমপ্লেস্টেস্ট সরানো যেতে পারে ।

আমি এখনও দ্রুপাল 8-তে আপগ্রেড করছি না, তবে আমি ভাবছিলাম যে কীভাবে আমি পিএমপিউনিত (ট্রেন্ড অনুসারে ফলোআপ করতে) সিম্পলেস্টেস্টের পরিবর্তে বিদ্যমান পরীক্ষাগুলি লিখতে পারি?

ড্রপাল 7 এর সাথে পিএইচপিউনিটকে সংহত করার জন্য কি কোনও পদ্ধতি বা মডিউল আছে?

Phpunit বা মাতাল মত কিছু আছে , কিন্তু তারা দ্রুপাল 7 এর জন্য নয়।


1
শুধু বেহাতকে সেখানে ফেলে দিতে চাই। রিয়েল-ওয়ার্ল্ড পরীক্ষার পরিস্থিতিগুলি করার জন্য এটি দুর্দান্ত (সত্যই ইউনিট টেস্টিং নয়): drupal.org/project/drupalexistance আপনি এটি সেটআপ করার পরে এটি ড্রুপাল কার্যকারিতাটিকে বাতাসের পরীক্ষা করে তোলে। আমরা সিআই পরিবেশে বেহাত চালাচ্ছি এবং এটি ভালবাসি!
donutdan4114

@ donutdan4114 আপনি কি আরও কিছু তথ্য বা একটি নির্দেশমূলক ভিডিও সরবরাহ করতে পারেন যাতে আপনি দ্রুপালের সাথে এটি কীভাবে সম্পাদন করেন? আমি খুব আগ্রহী.
zkent

উত্তর:


11

আপনার প্রতিটি পরীক্ষার ফাইলের মধ্যে ড্রুপাল বুটস্ট্র্যাপ করে চালানোর জন্য আপনি পিএইচপিউনিট পরীক্ষাগুলি পেতে পারেন। এটি আদর্শ নয়, তবে এটি কাজ করে।

define('DRUPAL_ROOT', 'your/path/to/drupal');
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';

// Bootstrap Drupal.
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

// Proceed with PHPUnit tests as usual from here.
class MyTest extends \PHPUnit_Framework_TestCase {
  ...

4
আপনার যদি এটি করার দরকার হয় তবে আপনি যা লিখছেন তা ইউনিট টেস্ট নয়, সম্ভবত আপনার কেবল সিম্পেস্টেস্ট-ভিত্তিক কোর টেস্টিং মডিউল থেকেই ড্রুপাল ওয়েবেটেকেস ব্যবহার করা উচিত।
matt2000

@ ম্যাট 2000 হ্যাঁ এবং পরীক্ষা শেষ হওয়া অবধি ঘন্টা অপেক্ষা করুন ...
কোডিয়াম

3

পিএইচপিউনিট বস্তুগুলি তৈরি করার জন্য একটি দুর্দান্ত এপিআই সরবরাহ করে যেখানে দ্রুপালের সহজতমটি হয় না। নেই এক গ্রন্থাগার Drupal এর 7 PHPUnit একীভূত জন্য সারকথা পাওয়া
এই স্ক্রিপ্টগুলি কার্যকর করতে আপনার এই গিস্ট-সংগ্রহস্থলটি চেকআউট করতে হবে । কমান্ড-লাইনে ইউনিট-টেস্টগুলি সম্পাদন করতে কেবল একটি দ্রুপাল সাইট (যেমন। <DRUPAL_ROOT>/sites/default) এ যান এবং আপনি phpunit কমান্ডটি ঠিক যেমন dphpunit.bash ব্যবহার করুন।

স্ক্রিপ্টটিতে 3 টি ফাইল রয়েছে:

  1. dphpunit.bash - যা কেবলমাত্র কয়েকটি অতিরিক্ত পরামিতি সহ ড্রান-ডিএফপুনিট.পিএপকে ডাকে। এটি দরকার কারণ পিএইচপি সঠিকভাবে সিমলিঙ্কগুলি মোকাবেলা করতে অক্ষম।
  2. drun-dphpunit.php - এটি অতিরিক্ত প্যারামিটারটি পরিচালনা করে ব্যতীত মূলত প্রবাহিত phpunit রানার হিসাবে একই।
  3. bootstrap.inc.php - যা ড্রুপের সাথে ড্রুপলের বুটস্ট্র্যাপকে খুব মিল করে।

সূত্র: http://devblog.more-onion.com/content/writing-unit-tests-drupal-7


bootstrap.inc.php

<?php

$path = CWD;

$site_dir = NULL;
$dpl_dir = NULL;

while ($path != '/') {
    if (file_exists($path . '/settings.php')) {
        $site_dir = $path;
    }
    if (file_exists($path . '/index.php') && file_exists($path . '/includes/bootstrap.inc')) {
        $dpl_dir = $path;
        break;
    }
    $path = dirname($path);
}

if (!$dpl_dir) {
    echo "No drupal directory found in or above current working directory. Aborting. \n";
    exit(1);
}
if (!$site_dir) {
    $site_dir = $dpl_dir . '/sites/default';
    if (!file_exists($site_dir . '/settings.php')) {
        echo "No configured site found. Aborting.\n";
        exit(1);
    }
}

$_SERVER['HTTP_HOST'] = basename($site_dir);
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';

define('DRUPAL_ROOT', $dpl_dir);
set_include_path($dpl_dir . PATH_SEPARATOR . get_include_path());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

dphpunit.bash

#!/bin/bash

# get dirname of the script
DIR="$(dirname $(readlink "$0"))"

# assume the boostrap script is stored in the same directory
php "$DIR/drun-phpunit.php" "$(pwd)" --bootstrap "$DIR/bootstrap.inc.php" "$@"

drun-phpunit.php

<?php
require_once 'PHP/CodeCoverage/Filter.php';
PHP_CodeCoverage_Filter::getInstance()->addFileToBlacklist(__FILE__, 'PHPUNIT');

if (extension_loaded('xdebug')) {
  xdebug_disable();
}

if (strpos('/usr/bin/php', '@php_bin') === 0) {
  set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
}

require_once 'PHPUnit/Autoload.php';
define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');
define('CWD', $_SERVER['argv'][1]);
unset($_SERVER['argv'][1]);

$command = new PHPUnit_TextUI_Command;
$command->run($_SERVER['argv']);

দ্রুপাল with এর সাথে পিএইচপিউনিটের একীকরণের জন্য আরও একটি গ্রন্থাগার রয়েছে: https://github.com/sebastianbergmann/phpunit

এই স্ক্রিপ্টগুলি সম্পর্কে আরও তথ্য এখানে চেক করা যেতে পারে: http://thomaslattimore.com/blog/using-phpunit-with-drupal-7


5
দুঃখের বিষয়, এই রেপো চলে গেছে।
শেলডোনক্রেগার

2
-1 কারণ আক্ষেপ চলে গেছে।
cwallenpoole

1

কনফিগারেশন ফাইল সহ কার্যকর আছে।

  1. আপনার ড্রুপাল প্রকল্পের রুটে phpunit.xML.dist ফাইল তৈরি করুন । এটি ধারণ করে
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="phpunit.xsd"
         bootstrap="drupal_phpunit_bootstrap.php"
         verbose="true">

</phpunit>
  1. Phpunit আমাদের ড্রুপাল উদাহরণ বুটস্ট্র্যাপ করতে হবে। ড্রুপাল phpunit বুটস্ট্র্যাপ ফাইল তৈরি করুন। আমি এর নাম drupal_phpunit_bootstrap.php রাখতে পছন্দ করি
<?php

$_SERVER['HTTP_HOST'] = 'your.url';
$_SERVER['SCRIPT_NAME'] = '/index.php';
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['REQUEST_METHOD'] = 'GET';
$_SERVER['SERVER_NAME'] = NULL;
$_SERVER['SERVER_SOFTWARE'] = NULL;
$_SERVER['HTTP_USER_AGENT'] = NULL;
// Fix for behat drupal instantiation.
define('DRUPAL_ROOT', dirname(realpath(__FILE__)));
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

সংক্ষেপ: https://gist.github.com/permanovd/cb9c02920c49a29c97653f4f697147b1

এখানেই শেষ. এখন আপনি বিভিন্ন উপায়ে আপনার পরীক্ষা শুরু করতে পারেন।

1. সিএলআই

phpunit -c phpunit.xML.dist প্রশ্নবিলিডেশনভ্যালিউইপশনস ইনপুটস্টেস্ট / ইউরসাইট.ডির / পাবলিক_এইচটিএমএল / প্রোফাইলেস / স্ট্যান্ডার্ড / মডুলস / সোম_মডিউল / স্টেটস / কিউশনভিশনেশন টেস্ট.এফপি

কোথায়:

  • -c : কনফিগারেশন ফাইল সংজ্ঞায়িত করে।
  • প্রশ্নবিলিভিশনভ্যালুঅ্যাপশনস ইনপুট টেস্ট এবং পাথ : পরীক্ষার শ্রেণীর নাম এবং এটির জন্য পথ নির্ধারণ করে।

2. আইডিই (পিএইচপিস্টর্ম)

আপনাকে পরীক্ষা চলমান কনফিগারেশন যুক্ত করতে হবে

টেস্ট রান কনফিগারেশন

এবং প্রতিটি পরীক্ষায় ড্রুপাল বুটস্ট্র্যাপ কোড অন্তর্ভুক্ত করার দরকার নেই।

বিঃদ্রঃ

আপনার পরিবেশের ভুল পিএইচপি সংস্করণের কারণে পরীক্ষাগুলিতে আপনার সমস্যা হতে পারে।

আরও পড়া:

https://phpunit.de/manual/current/en/organizing-tests.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.