2010-01-01 19 views
5

के साथ एकाधिक कक्षाओं का परीक्षण करना यह एक बेवकूफ सवाल हो सकता है, लेकिन मैं इसे काम करने के लिए प्रतीत नहीं कर सकता।PHPUnit

मैं परीक्षण करने के लिए PHPUnit का उपयोग कर रहा हूं।

class XTest extends PHPUnit_Framework_TestCase {...} 
class YTest extends PHPUnit_Framework_TestCase {...} 

हालांकि, मैं दोनों वर्गों को चलाने के लिए असमर्थ हूं: वर्तमान में मैं Tests.php नामक एक फाइल में दो वर्गों की है। मैं विंडोज पर निम्न आदेश चला रहा हूं:

php "C:\Program Files (x86)\PHP\phpunit" Tests 

और यह "टेस्ट" नामक एक टेस्ट क्लास चलाने की कोशिश करता है। इसके बजाय, मैं इसे "एक्सटेस्ट" और "वाईटेस्ट" और फ़ाइल पर मौजूद सभी को चलाने के लिए चाहता हूं। मैं आसानी से कई परीक्षण कक्षा कैसे चला सकता है?

उत्तर

3

The PHPUnit Docs आदेश पंक्ति परीक्षण धावक के तर्कों की व्याख्या करता है।

अपने मामले में, आप Tests प्रदान कर रहे हैं, जिसका अर्थ है कि PHPUnit Tests.php फ़ाइल में Tests कक्षा के लिए दिखता है।

इस ज्ञान के साथ, यह देखना आसान है कि आपके परीक्षणों को व्यवस्थित करने का सबसे अच्छा तरीका प्रति फ़ाइल एक टेस्ट क्लास लिखना होगा, TestClassName.php के बराबर फ़ाइल नामों के साथ।

हालांकि, अगर किसी कारण से आप ऐसा करने के लिए नहीं करना चाहते हैं, तो आप एक अतिरिक्त तर्क परीक्षण धावक जो परीक्षण वर्ग फ़ाइल बताने के लिए प्रदान कर सकते हैं में घोषित किया जाता है:

php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php 
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php 
+1

लेकिन क्या कई परीक्षण चलाने का कोई आसान तरीका है? मैं 200 कक्षाओं का परीक्षण करने के लिए 200 अलग-अलग आदेशों को चलाने के लिए नहीं चाहता ... – Tower

+5

निश्चित रूप से, यदि आप परीक्षण धावक को तर्क के रूप में एक निर्देशिका देते हैं, तो यह निर्देशिका को उन सभी परीक्षणों को दोबारा चलाने के लिए पार करेगा। –

+0

एक फ़ाइल में दोनों वर्गों का परीक्षण करने का एक और विकल्प: 1) test.php को Test.php का नाम बदलें 2) इसे एक अलग निर्देशिका में डालें, मान लें कि 'परीक्षण' 3) रन: phpunit परीक्षण – Andy

5

के सभी लाना अपने एक ही निर्देशिका के तहत परीक्षण और PHPUnit को दोबारा पार करने के लिए पूछना, काम करेगा, लेकिन यदि आपके पास विभिन्न निर्देशिकाओं के तहत आपके परीक्षण हैं या केवल विशिष्ट परीक्षण कक्षाओं के विशिष्ट भाग को चलाने के लिए चाहते हैं, तो @group annotation हो सकता है कि आप जो खोज रहे हैं।

जब आप अपने परीक्षण निष्पादित करते हैं, तो आप php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong> का उपयोग कर सकते हैं और PHPUnit केवल उन परीक्षणों को निष्पादित करेगा जिनके पास उनके PHPDoc में @group insert_name_of_group_to_which_xtests_and_ytests_belong है।

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