2009-08-13 34 views
12

Tôi đang tìm kiếm các cách bổ sung để kiểm tra các ứng dụng ASP.NET MVC và chạy vào số MvcIntegrationTestFramework của Steve Sanderson. Cách tiếp cận này trông khá hứa hẹn nhưng tôi đã tự hỏi liệu có ai có kinh nghiệm thực tế để chia sẻ hay không.Có ai đã sử dụng MvcIntegrationTestFramework của Steve Sanderson không?

+0

Tôi chưa sử dụng nhưng ý tưởng tách trình duyệt khỏi thử nghiệm tích hợp rất hấp dẫn. –

+0

Nhưng để tôi tích hợp ngụ ý, um, tích hợp các lớp. Và trình duyệt (đặc biệt là javascript và ajax) thực sự là một lớp cần được kiểm tra. –

+0

Xin chào James. Điều đó chắc chắn cần phải được thực hiện nhưng theo kinh nghiệm của tôi rất khó để tự động hóa và do sự khác biệt trình duyệt bạn cần phải làm điều đó cho một số người trong số họ. Vì vậy, đây không phải là một sự thay thế mà là một bổ sung trong thử nghiệm trình duyệt. Và hữu ích cho việc tìm hồi quy. – Maurice

Trả lời

7

Tôi đang có một số kết quả thực sự tốt từ nó. Tôi không quan tâm người khác nói gì về nhu cầu kiểm tra lượt xem, ngay khi bạn thêm dòng mã đầu tiên vào chế độ xem, ngay cả khi mã có liên quan đến bản trình bày nghiêm ngặt, bạn giới thiệu khả năng xảy ra lỗi nó sẽ là một ý tưởng tốt để viết các bài kiểm tra tự động. Quan tâm chính của tôi là chỉ bắt được nhiều màn hình trắng và ngoại lệ/lỗi màn hình màu vàng nhất có thể. Để làm như vậy tôi đã được sử dụng đoạn mã từ bài viết trên blog giới thiệu Steven để đảm bảo rằng trang này trả lại đúng mà không ném bất kỳ trường hợp ngoại lệ:

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html")); 

Các cạm bẫy nhỏ mà tôi thấy với khuôn khổ này có thể là:

  • Nếu trang web của bạn đang làm một số mô hình khá phức tạp giữa các khung nhìn và các phương thức hành động, bạn có thể thấy mình tạo một số NameValueCollections khá lớn như trong ví dụ này (một phương thức hành động thực sự lấy đối tượng mô hình khung nhìn LogonModel). không thấy bất kỳ cách nào để truyền bất kỳ kiểu đối tượng mô hình khung nhìn phức tạp nào vào các phương thức hành động của bạn bằng cách sử dụng khung công tác này:

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • Thi browsingSession.ProcessRequest ("url") tạo ra một ứng dụng máy chủ/bối cảnh đó thực sự thực thi mã web mà bạn đang thử nghiệm bằng cách sử dụng cấu hình trong dự án mà bạn đang thử nghiệm. Điều này có nghĩa là các thử nghiệm chạy chậm một chút và có thể sửa đổi dữ liệu thực, vì tôi không thấy cách nhanh chóng và dễ dàng trao đổi kho lưu trữ truy cập dữ liệu trong dự án web của bạn được thử nghiệm với phiên bản giả bằng cách sử dụng bất kỳ cơ sở nào được tích hợp sẵn khung kiểm tra. Nói cách khác, bạn có thể cần phải cuộn của riêng bạn bằng cách sử dụng một số phương tiện dựa trên web.config.
+0

Theo dõi - Tôi khuyên bạn nên chuyển sang MVC3 và sử dụng RazorGenerator. Bạn có thể chạy MVC2 và MVC3 đồng thời, di chuyển các trang web đơn tại một thời điểm, mà tôi tìm thấy để làm việc liên tục. Mặc dù khung công tác của Steve Sanderson hoạt động tốt trong các hạn chế của MVC2, chúng tôi thấy khó quản lý các thay đổi đối với các đường dẫn tệp mã hóa cứng cần thiết khi sử dụng khung kiểm tra trên các máy dev của chúng tôi so với C.I. máy chủ. Vấn đề đó không tồn tại với RazorGenerator + MVC3. –

+1

Cảm ơn bạn đã theo dõi! Bạn có thể giải thích ngắn gọn cách RazorGenerator giúp bạn thay thế MvcIntegrationTestFramework cho các bài kiểm tra tích hợp của bạn không? Làm thế nào để biên dịch trước xem Razor của bạn giúp với điều đó? Có thể bạn đã viết blog về nó :-) – Oliver

0

Tôi chưa sử dụng khung này. Nhưng dựa trên kinh nghiệm đọc sách của anh ấy - Pro ASP.NET MVC Framework và một khung xác nhận khác xVal anh ấy đã phát triển, tôi sẽ nói "HE IS GREAT".

+0

Tôi thực sự thích cuốn sách của anh ấy. Trong thực tế, tôi có một bản sao bên cạnh tôi ngay bây giờ. – Maurice

0

Thử nghiệm nó một chút và nó có thể rất hữu ích trong một số trường hợp. Nhìn chung, nếu tôi thấy công việc tiếp theo, tôi sẽ sử dụng cho một dự án tương lai.

Không tiến hành như đã có WatIn thiết lập và chăm sóc một số điều tôi không muốn giải quyết lại trong khuôn khổ này. Ví dụ. xác thực thông qua một hộp thoại, có thể sẽ yêu cầu thay đổi mã.

1

Sau khi đọc ardave's answer một thời gian trước đây, chúng tôi thực sự đã thử nó cho chính mình cho ứng dụng mới Orchard dựa trên Marinas.info của chúng tôi.

Trước hết, tôi khuyên mọi người nên bắt đầu từ một cái nĩa của this version vì nó thậm chí còn dễ thiết lập hơn bản gốc.

Đối với bất kỳ ứng dụng MVC3 "bình thường" nào, nó chỉ hoạt động. Thật không may, cùng với Orchard nó đã không chơi tốt, ít nhất là không phải với một phiên bản chưa sửa đổi của Global.asax.cs của họ. Vì vậy, chúng tôi vẫn đi xuống các browser based testing road nhưng chúng tôi tiếp tục sử dụng nó để thực hiện lệnh Orchard bên trong ứng dụng đó là đủ nhanh.

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