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?
Trả lời
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.
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. –
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
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".
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
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ã.
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.
- 1. Trình trợ giúp BeginCollectionItem của Steve Sanderson sẽ không ràng buộc chính xác
- 2. BeginCollectionItem của Steve Sanderson không hoạt động trong mọi trường hợp ... giải pháp tiềm năng?
- 3. Có ai đã sử dụng HipHop cho PHP không?
- 4. Có ai đã sử dụng Magma trong Pharo2.0 không?
- 5. Có ai đã sử dụng "GWT Designer" không?
- 6. Có ai đã sử dụng ServiceLoader cùng với Guice không?
- 7. Có ai đã thử sử dụng ZooKeeper không?
- 8. Có ai đã sử dụng SciPy với IronPython không?
- 9. Có ai đã sử dụng JS.Class và thích nó không?
- 10. Có ai đã thử Flax không?
- 11. Có ai đã thử vss2git không?
- 12. Có ai đã thử Webistrano không?
- 13. Có ai sử dụng ActionChains của Webdriver (python binding) không?
- 14. Có ai sử dụng OBR của OSGi không?
- 15. Có ai từng sử dụng DialerFilter không?
- 16. Có ai đang sử dụng Kanban không?
- 17. Có ai đã sử dụng Lua để xây dựng một ứng dụng web không?
- 18. ColdFusion: Có ai sử dụng WDDX không?
- 19. Có ai đã sử dụng Robotium hoặc Calculon để thử nghiệm các ứng dụng Android không?
- 20. Có ai đã bị iOS App từ chối vì sử dụng các thiết bị UDID không?
- 21. Có ai đã thử sử dụng biến môi trường UV_THREADPOOL_SIZE không?
- 22. Có ai ở đây đã thử sử dụng cổng iSeries Python không?
- 23. Có ai đã sử dụng Minitest :: Spec withing a Rails functional test không?
- 24. Có ai đã sử dụng máy chủ web GWAN trong sản xuất không?
- 25. Có ai đã sử dụng Delphi để lập trình VST không?
- 26. Google SPDY - Có ai đã sử dụng nó trên Apache không?
- 27. Có ai đã từng sử dụng Google App Engine với phiên bản Python 2.6 không?
- 28. MySQL: Có ai đã sử dụng công cụ lưu trữ TokuDB không?
- 29. Có ai đã sử dụng Sphinx để ghi lại dự án C++ không?
- 30. Bất kỳ ai đã sử dụng Django và JQuery Autocomplete?
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. –
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. –
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