2009-03-26 42 views
7

Khi tôi muốn chạy tất cả các thử nghiệm đơn vị của mình, tôi chạy thử nghiệm rake: đơn vị. Để chạy tất cả các bài kiểm tra chức năng của tôi, tôi chạy kiểm tra rake: functionals. Nếu tôi muốn chạy tất cả các trường hợp thử nghiệm trong một tập tin, tôi chạyRuby on Rails: Chạy thử nghiệm

ruby ​​test/unit/username_test.rb

Một vài người đã nói với tôi rằng tôi nên chạy cào thay vì như

cào kiểm tra: đơn vị TEST = test/unit/username_test.rb

Để chạy thử nghiệm, họ nói tôi nên luôn chạy cào. Tôi biết tôi nên chạy cào nếu tôi kiểm tra tất cả các bài kiểm tra đơn vị của mình. Nhưng nếu nó chỉ là một tập tin hoặc một phương pháp thử nghiệm cụ thể trong một tập tin mà tôi đang thử nghiệm? Tôi có nên dùng cào không? Có sự khác biệt nào giữa hai người không? Tôi có được lợi ích gì khi chạy cào trên ruby ​​không? Có bất kỳ bất lợi để chạy ruby ​​chứ không phải là cào?

Trả lời

2

Không, tôi không nghĩ vậy. Rake có vẻ là một cách thuận tiện để chạy tất cả các bài kiểm tra, tất cả các bài kiểm tra đơn vị hoặc tất cả các bài kiểm tra chức năng/bộ điều khiển. Đối với một tập tin, tôi sử dụng cách tiếp cận ruby object_test.rb .. ngắn hơn và hoạt động tốt cho dự án nhà ray của tôi.

6

Đáng buồn thay, cả hai không giống nhau. Chạy các bài kiểm tra dưới cào có thể kéo những thứ từ những nơi khác nhau hơn khi bạn chạy thử nghiệm trực tiếp (nhiều vấn đề hơn khi bạn có nhiều phiên bản đá quý, v.v. trên hệ thống của bạn).

Mục đích là các thử nghiệm chạy dưới cào phải nằm trong môi trường phù hợp với những đường ray sẽ sản xuất; Tôi không thể chứng thực chúng khớp với nhau như thế nào, nhưng tôi đã thấy rằng nó chạy qua khi chạy trực tiếp nhưng không thành công khi chạy qua cào hoặc đường ray (và ngược lại).

+0

điều này cho biết thiết lập thử nghiệm kém và thường do một phương pháp chạy thử nghiệm theo thứ tự khác với phương pháp khác; một trong số đó làm cho các thử nghiệm thất bại. Có khả năng là do bạn không sử dụng các giao dịch và kiểm tra không tự dọn dẹp, hoặc không yêu cầu các đồ đạc mà họ sử dụng đúng cách. –

3

Trước khi đăng ký ít nhất, tôi khuyên bạn nên chạy rake để truy cập mọi thứ, để được đảm bảo rằng không có gì bất ngờ bị hỏng.

Đồng ruby ​​có vẻ lý tưởng để thử nghiệm nhanh chóng các tệp đơn trong khi lặp lại.

Hãy lưu ý rằng chạy mọi thứ thông qua rake có thể tạo ra các kết quả khác nhau để chạy mọi thứ một cách riêng lẻ, gần đây tôi đã làm sai điều gì đó trong một thử nghiệm. một bài kiểm tra tiếp theo chỉ xuất hiện khi tôi sử dụng cào.

-1

Chúng phải giống hệt nhau. nếu không, bạn chắc chắn đang làm điều gì đó sai.

Như tôi đã nói trong các nhận xét khác của tôi, nếu bạn nhận được các bài kiểm tra mà vượt qua trong một, nhưng thất bại trong khác, bạn đang làm điều gì đó rất sai; điều này cho thấy thiết lập thử nghiệm kém và thường được gây ra bởi một lệnh chạy thử khác nhau giữa hai phương pháp thử nghiệm; một trong số đó làm cho các thử nghiệm thất bại.

Thông thường, nguyên nhân của việc này là bạn không sử dụng các giao dịch và/hoặc kiểm tra không tự dọn dẹp. Ví dụ, không yêu cầu đúng các đồ đạc mà họ sau đó kiểm tra, và thay vào đó dựa vào trạng thái cơ sở dữ liệu đã tồn tại từ trước.

bạn được tự do sử dụng một trong hai phương pháp. nếu có điều gì đó xảy ra, bạn đang làm điều gì đó sai trong các bài kiểm tra của mình và bạn nên sửa mã của mình.

0

Cả hai không giống nhau. Rake sẽ thực hiện một số thử nghiệm sơ bộ.

Mục đích là các thử nghiệm chạy dưới cào phải nằm trong môi trường phù hợp với những đường ray sẽ sản xuất;

Một sự khác biệt mà tôi đã nhận thấy là với cào một số tải vật cố xảy ra có thể được thông qua bằng ruby.

Tôi khuyên bạn nên sử dụng cào, trừ khi bạn đang sử dụng dòng lệnh ruby ​​để chỉ một thử nghiệm trong tệp có tùy chọn -n.

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