PHPUnit के साथ अपवादों के परीक्षण के दौरान, परीक्षा के लिए प्रत्येक कथन या दावे को अपवाद फेंकने का सबसे अच्छा तरीका क्या है?मैं PHPUnit के साथ कई अपवादों का परीक्षण कैसे करूं?
मैं मूल रूप से इस तरह कुछ करना चाहता हूँ:
public function testExceptions()
{
$this->setExpectedException('Exception');
foo(-1); //throws exception
foo(1); //does not throw exception
}
//Test will fail because foo(1) did not throw an exception
मैं निम्नलिखित है, जो काम करता है, लेकिन IMO काफी बदसूरत है के साथ आ गए हैं।
public function testExceptions()
{
try {
foo(-1);
} catch (Exception $e) {
$hit = true;
}
if (!isset($hit))
$this->fail('No exception thrown');
unset($hit);
try {
foo(1);
} catch (Exception $e) {
$hit = true;
}
if (!isset($hit))
$this->fail('No exception thrown');
unset($hit);
}
मैं निश्चित रूप से आपका बिंदु देखता हूं, हालांकि यह अभी भी कई परीक्षणों के लिए थोड़ा अजीब लगता है जब प्रत्येक का बिंदु यह सुनिश्चित करना है कि अपवाद फेंक दिया जाए। – etheros
आप मानों में पास करने के लिए '@डेटावाइडर एनोटेशन' का भी उपयोग कर सकते हैं (और यहां तक कि अपेक्षित अपवाद का नाम भी - '$ this-> setExpectedException ($ x)' के साथ उपयोग करें)। एक नया टेस्ट वैल्यू जोड़ना (जो अपवाद फेंक देगा) तो डेटा प्रोवाइडर फ़ंक्शन में बस एक और सरणी प्रविष्टि होगी। –
रॉबर्ट मार्टिन हमेशा मामलों को विभिन्न परीक्षणों में विभाजित करने के लिए कहेंगे। मेरी राय में, @AlisterBulman उत्तर समस्या के लिए सही समाधान दिखाता है। –