2010-08-18 11 views
5

के साथ यूनिट परीक्षण मैं अपने ज़ेंड फ्रेमवर्क/डॉक्टर 2.0 एप्लिकेशन के लिए यूनिट परीक्षण लिखना चाहता था, लेकिन मुझे समझ में नहीं आता कि जेडएफ में यूनिट परीक्षण कैसे सेट किया जाए। इसके अलावा, मैं उन यूनिट परीक्षणों में सिद्धांत 2.0 शामिल करना चाहता हूं। मैं इसे स्थापित करने के बारे में कैसे जाउंगा? क्या आप मुझे एक उदाहरण के लिए इंगित कर सकते हैं?ज़ेंड फ्रेमवर्क/सिद्धांत 2.0

आप

+0

मैं भी कैसे शामिल करने के लिए में दिलचस्पी रखता हूँ यूनिट परीक्षणों में सिद्धांत 2। मैंने मेलिंग सूची पर इसके बारे में एक प्रश्न भी पोस्ट किया लेकिन मुझे कोई जवाब नहीं मिला। – tom

+0

मैंने इस मुद्दे पर कुछ प्रगति की है, और मुझे कुछ मिनट मिलने पर इस पोस्ट में अपना सेटअप पोस्ट कर देगा। क्या आपको लगता है कि किसी को अपने सिद्धांत 2.0 मॉडल परत में दृढ़ता का परीक्षण करना चाहिए, या इसके बारे में चिंता न करें और मॉडल को सादा php ऑब्जेक्ट्स के रूप में जांचें? – clarkstachio

+0

मुझे लगता है कि आपको केवल मॉडल का परीक्षण करना चाहिए और सिद्धांत नहीं करना चाहिए। जैसे ही वे अपने स्वयं के यूनिट परीक्षण लिखते हैं। क्या आपने इसके साथ कुछ प्रगति की है? – tom

उत्तर

2

मैं PHPUnit (phpunit.xml) के लिए एक विन्यास फाइल बनाई गई इकाई परीक्षण और परीक्षण निर्देशिका में TestHelper.php धन्यवाद सेट करने के लिए। कॉन्फ़िगरेशन मूल रूप से phpunit को कहता है कि कौन से यूनिट परीक्षण को निष्पादित करने की आवश्यकता है और फ़ोल्डरों और फ़ाइलों को कवरेज में छोड़ने की आवश्यकता है। मेरी कॉन्फ़िगरेशन में यह एप्लिकेशन और लाइब्रेरी फ़ोल्डर में सभी यूनिट परीक्षण फ़ाइलें हैं जिन्हें निष्पादित किया जा रहा है।

टेस्टेलपर को आपके सभी यूनिट परीक्षणों द्वारा विस्तारित करने की आवश्यकता है।

phpunit.xml

<phpunit bootstrap="./TestHelper.php" colors="true"> 
    <testsuite name="Your Application"> 
     <directory>./application</directory> 
     <directory>./library</directory> 
    </testsuite> 
    <filter> 
     <whitelist> 
      <directory suffix=".php">../application/</directory> 
      <directory suffix=".php">../library/App/</directory> 
      <exclude> 
       <directory suffix=".phtml">../application/</directory> 
       <directory suffix=".php">../application/database</directory> 
       <directory suffix=".php">../application/models/Entities</directory> 
       <directory suffix=".php">../application/models/mapping</directory> 
       <directory suffix=".php">../application/models/proxy</directory> 
       <directory suffix=".php">../application/views</directory> 
       <file>../application/Bootstrap.php</file> 
       <file>../application/modules/admin/controllers/ErrorController.php</file> 
      </exclude> 
     </whitelist> 
    </filter> 
    <logging> 
     <log type="coverage-html" target="./log/report" title="PrintConcept" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> 
     <log type="testdox" target="./log/testdox.html" /> 
    </logging> 
</phpunit> 

TestHelper.php

<?php 
error_reporting(E_ALL | E_STRICT); 

// Define path to application directory 
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); 

// Define testing application environment 
define('APPLICATION_ENV', 'testing'); 

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(), 
))); 

/** 
* Zend_Application 
*/ 
require_once 'Zend/Application.php'; 

/** 
* Base Controller Test Class 
* 
* All controller test should extend this 
*/ 
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php'; 

abstract class BaseControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase 
{ 
    public function setUp() 
    { 
     $application = new Zend_Application(APPLICATION_ENV, 
          APPLICATION_PATH . '/configs/application.ini'); 
     $this->bootstrap = array($application->getBootstrap(), 'bootstrap'); 

     Zend_Session::$_unitTestEnabled = true; 

     parent::setUp(); 
    } 

    public function tearDown() 
    { 
     /* Tear Down Routine */ 
    } 
} 

यह केवल जेडएफ और PHPUnit के लिए प्रारंभिक सेटअप को शामिल किया गया

+0

प्रतिक्रिया के लिए धन्यवाद। क्या आप सामान्य रूप से Zend_Test_PHPUnit_ControllerTestCase को अपने सभी परीक्षण मामलों में बढ़ाते हैं? या इस कक्षा को केवल नियंत्रक परीक्षणों के लिए बढ़ाया जाना चाहिए? – clarkstachio

+0

मेरा परीक्षण सभी बेसकंट्रोलरटेस्टकेस का विस्तार करता है। लेकिन आम तौर पर आपको केवल अपने नियंत्रक परीक्षणों और PHPUnit_Framework_TestCase से अन्य सभी परीक्षणों के लिए बेसकंट्रोलरटेस्टकेस से विस्तार करना चाहिए – tom

संबंधित मुद्दे