2017-04-06 14 views
10

ऐसा लगता है कि यह केवल मेरे सिस्टम पर होता है। कोई और इसे पुन: उत्पन्न नहीं कर सकता था। अगर त्रुटि का संदेश बहुत बड़ा है (मेरे मामले में लगभग 65k बाइट्स) स्क्रीन पर कुछ भी मुद्रित नहीं होता है। मैं विंडोज 7 पर PHP 7.1.3 का उपयोग कर रहा हूं, डिफ़ॉल्ट php.ini (स्मृति सीमा 8 जीबी पर सेट) और डिफ़ॉल्ट PHPUnit 6.0.13 कॉन्फ़िगरेशन के साथ। त्रुटि दोनों प्रॉम्प्ट और पावरहेल में प्रकट नहीं होती है।PHPUnit को बहुत बड़े त्रुटि संदेशों को मुद्रित करने का कारण क्या हो सकता है?

PHPUnit 6.0.13 सेबस्टियन Bergmann और योगदानकर्ताओं द्वारा:

<?php 

use PHPUnit\Framework\Constraint\Constraint; 
use PHPUnit\Framework\TestCase; 

class MyConstraint extends Constraint 
{ 
    protected $expected; 

    function __construct($expected){ 
     parent::__construct(); 
     $this->expected = $expected; 
    } 

    protected function matches($actual){ 
     return false; 
    } 

    function failureDescription($other): string{ 
     return "desc"; 
    } 

    function toString(){ 
     return "description"; 
    } 

    function additionalFailureDescription($other): string{ 
     return str_repeat("x", 100000); 
     // If set to a smaller dump, error will appear 
     // some people I asked to try could dump one million 
     // bytes without problems, while I can't print more 
     // than about 50k 
    } 
} 

class SomeTest extends TestCase 
{ 
    function testBigDump(){ 
     TestCase::assertThat("irrelevant", new MyConstraint("irrelevant")); 
    } 
} 

?> 

और यह मैं स्क्रीन पर प्राप्त होता है।

रनटाइम: PHPDBG 7.1.3 विन्यास: ..............

F 1/1 (100%)

समय: 361 एमएस, मेमोरी: 6.00

1) SomeTest :: testBigDump

       <------- Notice no error description here 

विफलताएं: एमबी

1 विफलता हुई! टेस्ट: 1, दावे: 1, विफलताओं: 1.

क्या आपको कोई विचार है कि इसका क्या कारण हो सकता है? पहले ही, आपका बहुत धन्यवाद। आपके विन्यास में

+0

पीएचपी स्मृति ठीक हो रहा है। आपको अलग-अलग त्रुटि मिल जाएगी। क्या आपने परीक्षण के आउटपुट को फ़ाइल में रीडायरेक्ट करने का प्रयास किया था? हो सकता है कि आपकी कमांड लाइन में इतनी लंबी स्ट्रिंग प्रदर्शित करने के लिए पर्याप्त स्मृति न हो। यह सहायक होगा यदि आप छद्म कोड के बजाय पूर्ण कार्य उदाहरण पोस्ट कर सकते हैं, इसलिए अन्य इसे दोहराने का प्रयास कर सकते हैं। –

+0

जो छद्म कोड नहीं है। केवल त्रुटि का कारण बनने के लिए पर्याप्त है – Wes

उत्तर

9

कुछ phpdbg

मैं इस मुद्दे को निर्मित किया है, जितना संभव हो उतना पर्यावरण एक विंडोज 7 वी एम का उपयोग कर को दोहराने के लिए प्रयास कर के माध्यम से PHPUnit परीक्षण चल रहा है।

सुराग आपके डंप में Runtime: PHPDBG लाइन था। स्पष्ट रूप से phpdbg रनटाइम के बारे में कुछ बड़े बफर को सही तरीके से काम करने से रोकता है। (, छोटा कर दिया स्पष्ट रूप से) नीचे मेरी उत्पादन, दोनों प्रारंभिक उत्पादन जब phpdbg.exe (लापता परीक्षण वर्णन) के माध्यम से चलाने के लिए और फिर जब php.exe के माध्यम से चलाने देखें:

C:\project>phpdbg -r phpunit-6.1.0.phar -v test.php 
[Welcome to phpdbg, the interactive PHP debugger, v0.5.0] 
To get help using phpdbg type "help" and press enter 
[Please report bugs to <http://bugs.php.net/report.php>] 
PHPUnit 6.1.0 by Sebastian Bergmann and contributors. 

Runtime:  PHPDBG 7.1.4 

F                 1/1 (100%) 


Time: 99 ms, Memory: 22.00MB 

There was 1 failure: 

1) SomeTest::testBigDump 

FAILURES! 
Tests: 1, Assertions: 1, Failures: 1. 
[Script ended normally] 

C:\project>php phpunit-6.1.0.phar test.php 
PHPUnit 6.1.0 by Sebastian Bergmann and contributors. 

F                 1/1 (100%) 


Time: 109 ms, Memory: 8.00MB 

There was 1 failure: 

1) SomeTest::testBigDump 
Failed asserting that desc. 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
----- Snip ----- 
संबंधित मुद्दे