2012-09-11 28 views
6

Có thực sự là một cách tốt để kiểm tra đơn vị dự án MonoTouch sử dụng NUnit và thử nghiệm MonoDevelop á hậu?Cách tốt nhất để thử nghiệm Đơn vị Dự án MonoTouch?

Tôi biết có loại dự án thử nghiệm đơn vị MonoTouch chính thức, nhưng chạy thử nghiệm trong trình mô phỏng không phải là cách tôi muốn. Bây giờ tôi muốn chạy thử nghiệm với các thử nghiệm MonoDevelop runner, sau đó tất cả mọi thứ nên làm việc với Jenkins (CI).

Tôi biết những hạn chế về mã UI cụ thể, vì vậy mọi thứ tôi muốn thử nghiệm không liên quan gì đến MonoTouch, tất cả đều là logic nghiệp vụ được đặt trong các dự án tách biệt.

Bằng cách thêm các xét nghiệm để dự án loại MonoTouch Thư viện, tôi nhận được System.IO.FileNotFoundException như mô tả ở đây: http://ben.phegan.name/index.php/2011/02/28/monotouch-and-unit-testing/

Bằng cách sử dụng một dự án thử nghiệm NUnit riêng biệt, tôi không thể tham khảo hệ thống của tôi dưới kiểm tra, bởi vì nó loại dự án là loại dự án thư viện MonoTouch, trong đó, tất nhiên, có một khung mục tiêu không tương thích (vMonoTouch).

Vì vậy, không có bất kỳ sự thay thế thực sự nào đối với Touch.Unit, phải không?

Trả lời

8

Có thực sự là một cách tốt để đơn vị kiểm tra các dự án MonoTouch sử dụng NUnit

Touch.Unit

và Á hậu kiểm tra MonoDevelop?

Không thực sự. Các dự án MonoTouch phụ thuộc vào monotouch.dll cần thực thi dưới iOS (không phải OSX). Vì vậy, có một nhu cầu cho các Á hậu để thực hiện trên giả lập hoặc các thiết bị.

Bây giờ có một vài quan niệm sai lầm trong câu hỏi của bạn:

sau tất cả những gì cần làm việc với Jenkins (CI).

Chạm .Unit đã được sử dụng với máy chủ tích hợp/liên tục (miễn là chúng đang chạy OSX) sử dụng cả trình mô phỏng và/hoặc thiết bị iOS. Chi tiết có sẵn here.

Tôi biết những hạn chế về mã cụ thể UI,

Touch.Unit là không về thử nghiệm giao diện người dùng. Trong thực tế, nó khá xấu khi kiểm tra giao diện người dùng (nhưng bên cạnh điểm đó).

Chạm vào.Unit là một người chạy thử nghiệm chạy trên iOS. Điều đó cho phép bạn sử dụng MonoTouch/iOS API bên trong các bài kiểm tra của riêng bạn (nó có thể là UIKit, nhưng nó có thể là StoreKit, GameKit, * Kit, bất kỳ lớp Foundation nào ... đó là một thế giới khá lớn).

Vì vậy, không có bất kỳ sự thay thế thực sự nào đối với Touch.Unit, phải không?

Có.Nếu logic kinh doanh của bạn là cũng bị cô lập và không phụ thuộc vào monotouch.dll sau đó bạn sẽ có thể xây dựng nó hoặc là:

  • một dự án phi MonoTouch (dự án khác nhau, nguồn giống nhau), tức là liên kết với các khung thường lệ; hoặc
  • liên kết đến các nguồn từ bên trong nhóm thử nghiệm đơn vị của bạn (liên kết đến khung thông thường);

Đó classic lắp ráp thử nghiệm nunit sau đó sẽ là một dự án thường xuyên khuôn khổ và sẽ có thể chạy từ mặc định NUnit Á hậu hay từ bên trong MonoDevelop Á hậu đơn vị kiểm tra.

+0

Cảm ơn câu trả lời của bạn (btw. Tôi vừa viết cho bạn một email cách đây vài phút về việc biên soạn Touch.Unit một mình;)). Tôi biết rằng Touch.Unit không phải là về kiểm tra giao diện người dùng, những gì tôi có nghĩa là những gì bạn mô tả một cách tốt hơn, đặc biệt là phụ thuộc từ monotouch.dll. Tôi không có những phụ thuộc đó trong hệ thống hiện tại của tôi đang được kiểm tra, vì vậy tôi đã rất ngạc nhiên khi phải vật lộn xung quanh điều đó nhiều. Quản lý các lớp học trong hai loại dự án có vẻ là một cách tốt. Cảm ơn lời khuyên của bạn. –