2010-01-01 34 views
5

Đây có thể là một câu hỏi ngu ngốc, nhưng tôi dường như không thể làm cho nó hoạt động.Thử nghiệm nhiều lớp với PHPUnit

Tôi đang sử dụng PHPUnit để kiểm tra. Hiện tại tôi có hai lớp học trong một tệp có tên Tests.php:

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

Tuy nhiên, tôi không thể chạy cả hai lớp. Tôi đang chạy lệnh sau trên Windows:

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

Và nó cố gắng chạy một lớp thử nghiệm được gọi là "Kiểm tra". Thay vào đó, tôi muốn nó chạy "XTest" và "YTest" và tất cả những gì có trong tệp. Làm thế nào tôi có thể chạy nhiều lớp kiểm tra dễ dàng?

Trả lời

3

The PHPUnit Docs giải thích các đối số mà người thử nghiệm dòng lệnh mong đợi.

Trong trường hợp của bạn, bạn đang cung cấp Tests, có nghĩa là PHPUnit sẽ tìm kiếm một lớp Tests trong một tệp Tests.php.

Với kiến ​​thức này, thật dễ dàng để thấy rằng cách tốt nhất để tổ chức kiểm tra của bạn là viết một lớp thử nghiệm cho mỗi tệp, với tên tệp bằng TestClassName.php.

Tuy nhiên, nếu vì một lý do nào bạn không muốn làm điều đó, bạn có thể cung cấp một cuộc tranh cãi thêm để nói với Á hậu thử nghiệm mà nộp các lớp thử nghiệm được khai báo trong:

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

Nhưng có cách nào dễ dàng để chạy nhiều thử nghiệm không? Tôi không muốn chạy 200 lệnh khác nhau để kiểm tra 200 lớp ... – Tower

+5

Chắc chắn, nếu bạn đưa cho thư mục thử nghiệm một thư mục làm đối số, nó sẽ duyệt qua thư mục đệ quy chạy tất cả các kiểm tra mà nó tìm thấy. –

+0

Một tùy chọn khác để kiểm tra cả hai lớp trong một tệp: 1) đổi tên Tests.php thành Test.php 2) đặt nó vào một thư mục riêng biệt, hãy nói 'tests' 3) run: phpunit tests – Andy

5

Đưa tất cả các bạn các bài kiểm tra trong cùng một thư mục và yêu cầu PHPUnit duyệt qua chúng theo cách đệ quy sẽ làm việc, nhưng nếu bạn có các bài kiểm tra dưới các thư mục khác nhau hoặc chỉ muốn chạy các phần cụ thể của các lớp kiểm tra cụ thể, thì @group annotation có thể là những gì bạn đang tìm kiếm.

Khi bạn thực hiện các thử nghiệm, bạn có thể sử dụng php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong> và PHPUnit sẽ chỉ thực hiện các thử nghiệm có @group insert_name_of_group_to_which_xtests_and_ytests_belong trong PHPDoc của chúng.

Các vấn đề liên quan