2010-09-02 31 views
11

Tôi đang sử dụng SenTest trong XCode cho các bài kiểm tra đơn vị của mình. Tôi phải chạy một nhiệm vụ dòng lệnh cho các bài kiểm tra đơn vị của tôi để kiểm tra. Tôi có thể làm điều đó trong phương pháp + khởi tạo của lớp thử nghiệm của tôi (lớp con của SenTestCase, tất nhiên).SenTestKit: dọn dẹp sau khi TẤT CẢ các thử nghiệm đã chạy?

Tôi muốn chấm dứt tác vụ dòng lệnh khi các thử nghiệm được thực hiện. Vì không có sự đối lập với + khởi tạo, tôi bị bối rối.

Có cách nào để phân lớp lớp SenTest để làm điều này mà tôi đang xem không?

Trả lời

36

Không chạy công cụ dòng lệnh của bạn trong + khởi tạo. Nó được gửi bởi thời gian chạy Objective-C khi lớp được gửi đầu tiên bất kỳ thông báo nào.

Thay vào đó, hãy chạy công cụ dòng lệnh của bạn trong phương pháp +setUp của thử nghiệm của bạn. (Lưu ý rằng tôi thực sự có nghĩa là +setUp và không -setUp;. Rất nhiều folks dường như có một chút mờ về sự khác biệt giữa các phương pháp lớp học và ví dụ)

Trong trường hợp này, một lớpsetUp phương pháp được gọi bởi OCUnit trước bất kỳ các bài kiểm tra trong một lớp con SenTestCase đang chạy, và một lớptearDown phương pháp được gọi bởi OCUnit sau tất cả kiểm tra trong một SenTestCase lớp con ar chạy.

Vì vậy, dòng chảy chung cho một SenTestCase lớp con cụ thể là:

  • gửi +setUp-SomeTestCase
  • cho mỗi phương pháp test bắt đầu từ năm SomeTestCase (gọi nó là test___)
    • tạo một đối tượng mới SomeTestCase
    • gửi -setUp cho nó
    • gửi -test___ để nó
    • gửi -tearDown để nó
    • phát hành nó
  • gửi +tearDown để SomeTestCase

cách này, nếu bạn có một cái gì đó mà cần phải được thực hiện trước khi bất kỳ của bạn -test phương pháp chạy hoặc một thứ cần được thực hiện sau khi tất cả các phương pháp -test của bạn chạy, có một điểm xác định tại ich bạn có thể làm điều đó xảy ra. (Thay vì dựa vào quản lý bộ nhớ, mà không phải là xác định trong cùng một cách, và có thể không được xác định ở tất cả nếu bạn đang sử dụng GC.)

+2

Tôi đã không tìm thấy bất cứ điều gì đã nói về phương pháp + setup/+ teardown. Cảm ơn vì sự giác ngộ. – Mel

0

Bạn nên xem Google Toolbox for Mac hoặc dẫn xuất hơn nữa GHUnit. Cả hai (tôi nghĩ) cung cấp thiết lập cấp lớp và teardown ít nhất. Nếu bạn thực sự muốn chạy một dòng lệnh trước khi tất cả các thử nghiệm được chạy và sau đó là dòng lệnh thứ hai (có thể để giết đầu tiên) sau khi chạy thử nghiệm, tôi sẽ sửa đổi giai đoạn xây dựng kịch bản lệnh shell để chạy các kiểm tra đơn vị (bước cuối cùng) trong các giai đoạn xây dựng của mục tiêu gói UnitTest).

+4

Bạn không cần bất kỳ khung công tác bổ sung nào để có thiết lập và tách lớp cấp; đây là một phần của OCUnit. –

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