2017-04-06 22 views
10

Điều này dường như chỉ xảy ra trên hệ thống của tôi. Không ai khác có thể tái tạo nó. Nếu thông báo lỗi quá lớn (khoảng 65k byte trong trường hợp của tôi) không có gì được in trên màn hình. Tôi đang sử dụng PHP 7.1.3 trên Windows 7, với php.ini mặc định (giới hạn bộ nhớ là 8gb) và cấu hình PHPUnit 6.0.13 mặc định. Lỗi không xuất hiện trong cả dấu nhắc và quyền hạn.Điều gì có thể khiến PHPUnit không in các thông báo lỗi rất lớn?

<?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")); 
    } 
} 

?> 

Và đây là những gì tôi nhận được trên màn hình:

PHPUnit 6.0.13 bởi Sebastian Bergmann và đóng góp.

Runtime: PHPDBG 7.1.3 Cấu hình: ..............

F 1/1 (100%)

Thời gian: 361 ms, Memory: 6.00 MB

Có 1 thất bại:

1) SomeTest :: testBigDump

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

KHÔNG! Kiểm tra: 1, Xác nhận: 1, Thất bại: 1.

Bạn có biết điều gì có thể gây ra điều này không? Cảm ơn bạn trước.

+0

Bộ nhớ PHP có vẻ ổn. Bạn sẽ nhận được lỗi khác nhau. Bạn có cố gắng chuyển hướng đầu ra của thử nghiệm vào một tệp không? Có lẽ dòng lệnh của bạn không đủ bộ nhớ để hiển thị chuỗi dài như vậy. Sẽ hữu ích nếu bạn có thể đăng ví dụ làm việc đầy đủ thay vì mã giả, vì vậy những người khác có thể cố gắng sao chép nó. –

+0

không phải là mã giả. điều đó chỉ đủ để gây ra lỗi – Wes

Trả lời

9

Something trong cấu hình của bạn đang chạy thử nghiệm phpunit qua phpdbg

tôi đã tái tạo vấn đề này, cố gắng để tái tạo môi trường càng nhiều càng tốt bằng cách sử dụng Windows 7 máy ảo.

Đầu mối là dòng Runtime: PHPDBG trong bãi chứa của bạn. Rõ ràng một cái gì đó về thời gian chạy phpdbg ngăn cản bộ đệm lớn hoạt động chính xác. Xem đầu ra của tôi dưới đây, cả đầu ra ban đầu khi chạy qua phpdbg.exe (thiếu mô tả thử nghiệm) và sau đó khi chạy qua php.exe (cắt ngắn, rõ ràng):

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 ----- 
Các vấn đề liên quan