2013-04-12 10 views
18

से PHPUnit चलाने का प्रयास करता हूं तो मुझे आईडीई PhpStorm में PHPUnit परीक्षण चलाने की कोशिश करने में कोई समस्या नहीं है।त्रुटि जब मैं phpStorm

{ 
    "require": { 
     "phpunit/phpunit": "3.7.19" 
    } 
} 

अब मैं अपवाद recive जब मैं परीक्षण चलाने: PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

क्या गलत है

मैं संगीतकार फ़ाइल जो लग रहा है का उपयोग करें? जब मैंने नाशपाती स्थापित संस्करण परीक्षण ठीक काम किया।

// संपादित नमूना परीक्षण वर्ग:

class ReaderTest extends PHPUnit_Framework_TestCase 
    { 
     /** 
     * @test 
     */ 
     public function shouldGetReadedValue() 
     { 
      $this->assertTrue(true); 
     } 
    } 

// EDIT2 ट्रेस: ​​

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project 
Testing started at 14:53 ... 
PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183 
Stack trace: 
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass)) 
#1 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(389): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass)) 
#2 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(416): PHPUnit_Framework_TestSuite->addTestFile('/var/www/php-sh...') 
#3 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php(96): PHPUnit_Framework_TestSuite->addTestFiles(Array) 
#4 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('/var/www/php-sh...', '', A in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 183 

Process finished with exit code 255 
+1

क्या आप अपना यूनिट परीक्षण दिखा सकते हैं? क्या आपकी टेस्ट क्लास PHPUnit_Framework_TestCase का विस्तार करती है? –

+1

मैं अपना प्रश्न संपादित करता हूं, और नमूना परीक्षण कक्षा जोड़ता हूं। मेरे पास कुछ टेस्ट क्लास हैं। –

उत्तर

12

मुझे इस समस्या के बारे में समाधान मिला।

निर्देशिका में कॉन्फ़िगरेशन संपादित करने में मैं अपने परीक्षण कैटलॉग (/path/to/my/project/tests) पर पथ सेट करता हूं, यह परीक्षण ठीक से चल रहे हैं।

+2

यह ध्यान रखना महत्वपूर्ण है कि पथ को सेट करना होगा: 'रन> कॉन्फ़िगरेशन संपादित करें> PhpUnit' वहां,' निर्देशिका 'सेट की जा सकती है। आप phpStorm में 'फ़ाइल> सेटिंग्स' के तहत नहीं पाते हैं। – k0pernikus

0

PHPUnit_Framework_TestSuite के अंदर, इस कोड exists in the constructor:

if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) { 
    throw new PHPUnit_Framework_Exception(
     'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.' 
    ); 
} 

मैं अपने उदाहरण कि आप PHPUnit_Framework_TestCase बढ़ा रहे हैं में देखते हैं, लेकिन आप PHPUnit_Extensions_RepeatedTest जो PHPUnit_Extensions_TestDecorator जो अंततः फैली PHPUnit_Framework_Assert

PHPUnit_Framework_Assert 
    | 
    --PHPUnit_Extensions_TestDecorator 
     | 
     --PHPUnit_Extensions_RepeatedTest 

डबल अपने परीक्षण की जांच क्योंकि त्रुटि आप को चलाने के लिए प्रयास कर रहे हैं पता चलता है फैली उपयोग कर रहे हैं त्रुटि पता चलता है एक टेस्टसूइट PHPUnit_Extensions_RepeatedTest तक फैले परीक्षण का उपयोग कर। क्या आप टेस्ट सजावट का उपयोग करके PHUnit का विस्तार करने की कोशिश कर रहे थे?

http://docs.tadiavo.com/phpunit/www.phpunit.de/pocket_guide/3.1/en/extending-phpunit.html

बस इतना ही सलाह मैं वर्तमान में अपने वास्तविक परीक्षण को देखने और आप उन्हें कैसे चल रहे हैं बिना की पेशकश कर सकते है।

+0

ठीक है, लेकिन जब मैं कंसोल से परीक्षण चलाता हूं तो सबकुछ ठीक है? मुझे पूरा यकीन है कि मेरा परीक्षण अच्छा है। जब मैं PHPUnit का उपयोग बाहरी लाइब्रेरी समेत कर रहा हूं और PhpStorm में उपयुक्त कॉन्फ़िगरेशन सेट करता है ठीक है। –

+0

आपके प्रश्न ने कहा कि यह PHPStorm में काम नहीं करता है। शायद आपके पास आईडीई गलत तरीके से कॉन्फ़िगर किया गया था और अब यह काम करता है? –

+0

मैं मैन्युअल में आईडीई कॉन्फ़िगर किया गया था। मैं निर्भरता को सफलतापूर्वक जोड़ता हूं, फिर मैंने कस्टम लोडर को 'विक्रेता/autoload.php' पर सेट किया है। मैंने जो कुछ किया वह सब कुछ है। –

5

संगीतकार का उपयोग करते समय मुझे एक ही समस्या है।

समाधान आपकी परीक्षण फ़ाइल को अपनी निर्देशिका में रखना है। यहां मेरा कामकाजी phpunit है, मैंने अपना पूरा परीक्षण test निर्देशिका में रखा है।

<phpunit bootstrap="vendor/autoload.php" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    stopOnFailure="true"> 
    <testsuites> 
     <testsuite name="Test Suite"> 
      <directory>test</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

ऊपर पायोत्र के जवाब देने के लिए आशा है कि यह हल करती है, तो किसी को भी एक ही समस्या है .. :)

5

यह वह जगह है क्या मेरे लिए काम किया, धन्यवाद, लेकिन मैं यहाँ सब में थोड़ा और अधिक सटीक विस्तार के साथ प्रदान कर रहा हूँ चरणों मैं था करने के लिए: यह काम करने के लिए

कदम (PHPStorm 8.0.1 में परीक्षण):

1)Preferences > PHP > PHPUnitमें यकीन है कि कुछ भी नहीं है के लिए डिफ़ॉल्ट विन्यास च सेट किया गया है आईइल या डिफ़ॉल्ट बूटस्ट्रैप फ़ाइल।

2)Command Lineउपधारा में के माध्यम सेRun > Edit Configurations >एक कस्टम PHPUnit विन्यास करें, और सुनिश्चित करें:

क) सेटCustom working directory:/absolute/path/to/vendor किया जाना है।

ख) की जाँच "विकल्प विन्यास फाइल का उपयोग करें:" और/absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

के लिए सेट तो फिर तुम वर्ग और फ़ाइल को निर्दिष्ट करके कमरे में किसी भी परीक्षा वर्ग चला सकते हैं, या बस विन्यास में "परिभाषित किया जाता है की जांच फाइल "को कॉन्फ़िगर के अनुसार उन सभी को चलाने के लिए।