Đối unittestCó thể gỡ lỗi các thử nghiệm PhpUnit bằng tùy chọn --process-isolation không?
class SampleTest extends PHPUnit_Framework_TestCase
{
public function testBreakpoint()
{
$a = 18;
}
}
với breakpoint trên dòng 5 "$ a = 18;",
- Xdebug v2.1.0,
- PHPUnit 3.6.10,
- PHP 5.3.6 ,
- ubuntu 10.11
Đơn vị hoạt động thử nghiệm với tùy chọn NO --process-isolation dừng thực thi tập lệnh trên dòng 5, như mong đợi. Chạy cấu hình tương tự với tùy chọn --process-cô lập không ngừng thực hiện trên dòng 5.
Tùy chọn --process-ly chạy mỗi bài kiểm tra trong quá trình sử dụng mới 'proc_open' trong hàm runJob trong https://github.com/sebastianbergmann/phpunit/blob/3.6/PHPUnit/Util/PHP.php
Thử nghiệm với PhpStorm 3 và vim 7 với plugin trình gỡ lỗi. Nó cho phép gỡ lỗi PHPUnit chính nó, nhưng không phải testcases.
Có cách nào để gỡ lỗi quy trình con được tạo bởi PhpUnit bằng Xdebug không? có thể là Zend Debugger?
Tôi không được thiết lập để gỡ lỗi trong PHP Storm hoặc VIM, vì vậy bạn sẽ phải dùng thử. Nếu bạn bằng cách nào đó có thể có các biến môi trường thoát, bạn có thể kích hoạt Xdebug hoặc ZendDebugger với những biến đó. Ví dụ Zend QUERY_STRING = "start_debug = 1 & debug_host = 10.1.1.17 & no_remote = 1 & debug_port = 10000 & debug_stop = 1"/usr/local/bin/php /var/www/test.php (http://kb.zend.com/index.php ? Xem = mục nhập & EntryID = 130). Ví dụ Xdebug xuất XDEBUG_CONFIG = "idekey = session_name" (http://xdebug.org/docs/remote). Cho tôi biết nếu nó hiệu quả. – SamHennessy
@SamHennessy có, đó chính xác là cách gỡ lỗi các script CLI. Các biến môi trường đã tồn tại sau lệnh 'export' ma thuật. Nó không phải là một vấn đề để gỡ lỗi các script CLI. Như tôi đã đề cập, tôi có thể gỡ lỗi unittests khi PHPUnit chạy testcases trong cùng một luồng: 'phpunit SampleTest' hoạt động giống như một sự quyến rũ. 'Phpunit --process-isolation SampleTest' không hoạt động. Lệnh cuối cùng tạo ra 2 tiến trình: PHPUnit chính và một child cho mọi test. Tôi có thể gỡ lỗi quy trình chính chỉ, nhưng không phải là đứa trẻ, và đó là một vấn đề. –
Giả định của tôi là người dùng mà PHPUnit được chạy theo sẽ là cùng một người dùng như người dùng được sử dụng trong hoạt động proc_open. Nếu đó là sự thật thì nó sẽ kích hoạt một phiên gỡ lỗi bổ sung. Tôi không biết liệu VIM hay PHP Storm có thể hỗ trợ nhiều phiên gỡ lỗi hay không. Bạn có thể cần phải đặt các vv env trong hồ sơ của bạn để làm cho nó hoạt động. – SamHennessy