2009-09-05 31 views
15

Tôi đang tìm giải pháp bao gồm mã hoạt động với silverligt. Nó cũng phải làm việc với msbuild bởi vì chúng tôi chạy tất cả các bài kiểm tra đơn vị khác tự động trong máy chủ xây dựng.Cách nhận mã bảo hiểm khi thử nghiệm Silverlight

Tích hợp với Visual Studio và/hoặc chia sẻ lại là dấu cộng và tôi không có gì chống lại việc thiết lập dễ dàng hoặc trỏ đến hướng dẫn. Tôi không thường xuyên sửa đổi các tập tin xây dựng và tiếc là tôi không có thời gian để học msbuild tại thời điểm này.

Trả lời

6

Thật không may, do mô hình bảo mật trong suốt (tức là tất cả các ứng dụng được sandbox) trong thời gian chạy Silverlight, đây không phải là một nhiệm vụ dễ dàng. Phương tiện bảo hiểm mã .NET truyền thống sửa đổi lắp ráp bên dưới, chèn P/Gọi các cuộc gọi đến các công cụ thu thập vùng phủ sóng.

Kết quả là, các công cụ như công cụ thiết bị bảo hiểm mã Visual Studio 2008 không hoạt động với Silverlight.

Để thực hiện việc này trong Silverlight, bạn cần phải thiết kế chương trình thiết bị tùy chỉnh cộng với cách thu thập và báo cáo dữ liệu đó.

Trên nhóm Silverlight, chúng tôi đã phát triển một giải pháp một phần có thể kích hoạt tính năng này cho một số người, nhưng chưa sẵn sàng để phát hành. Hãy tìm nó một ngày nào đó trong Bộ công cụ Silverlight, có thể.

Rất tiếc, tôi không biết câu trả lời cho bạn hôm nay.

0

Theo NCover FAQ nó có thể bao gồm Silverlight:

[http://docs.ncover.com/ref/3-0/frequently-asked-questions/#q05][1]

Cho đến nay tôi đã không tìm thấy bất kỳ thông tin cho dù đó thực sự hoạt động ví dụ cho các thư viện lớp Silverlight. Lạ lùng là nếu ncover hoạt động thì không có thông tin (bài đăng trên blog, v.v.) về nó. Có phải mọi người đều đang sử dụng "Tạo thư viện .NET chuẩn và các tệp liên kết vào nó để lấy dữ liệu vùng phủ sóng" khi kiểm tra mã Silverlight?

Khi nói đến các giải pháp khác (thậm chí thương mại) googling của tôi đã không tạo ra bất kỳ kết quả nào.

1

Câu trả lời tại thời điểm này là Không (Nếu Jeff Wilcox nói không, không có ;-)).

Tôi hỏi NCover hỗ trợ câu hỏi này một khi trở lại (about their FAQ re Silverlight):

... Tôi đang sử dụng Silverlight 2.0 và AFAIK nó chỉ có thể chạy trong trình duyệt. Vì vậy, bạn đang nói về SL3 hoặc có tôi bị mất một cái gì đó?

Tôi tin rằng SL3 sẽ sớm là RTMed. Nếu tôi nâng cấp, ứng dụng của tôi có thể chạy ra khỏi trình duyệt (và do đó sử dụng NCover) tự động không, hoặc tôi có phải thay đổi nó để thực hiện việc này không?

Và đây là câu trả lời tôi nhận:

Các câu hỏi thường gặp là chính xác như nó đứng, tuy nhiên cách diễn đạt làm cho nó hơi khó hiểu. Điều gì có nghĩa là chủ đề FAQ là NCover không hỗ trợ bao gồm mã Silverlight (v1 hoặc v2 hoặc v3) khi sử dụng đối số // iis, vì sau đó nó chạy trên CLR riêng của nó.Tuy nhiên, các mã sau và các lớp hỗ trợ của ứng dụng Silverlight (v1 hoặc v2 hoặc v3) là hợp lệ C#/VB, vì vậy bạn có thể viết các bài kiểm tra đơn vị dựa vào phần đó của ứng dụng và chạy các thử nghiệm đó với NUnit/MSTest/Gallio/xUnit/etc và bạn sẽ nhận được bảo hiểm của phần đó.

Chúng tôi chưa điều tra liệu NCover có thể thu thập mức độ phù hợp trên Silverlight v3 khi nó chạy bên ngoài trình duyệt hay không, nhưng tôi hy vọng rằng chúng tôi sẽ không thể thực hiện. Tuy nhiên, khi chúng tôi biết chắc chắn, chúng tôi sẽ ghi chú trong tài liệu.

Tôi thực hiện điều này có nghĩa là các ứng dụng Silverlight thực sự không được hỗ trợ - bạn phải "Tạo thư viện chuẩn và tệp liên kết .NET vào đó để lấy dữ liệu phủ sóng".

0

Tôi đã hỏi điều này từ hỗ trợ NCover.

Câu hỏi của tôi là:

phép nói rằng tôi tạo ra một Silverlight lớp thư viện (Project -> New Project ...) từ Visual Studio. Trong thư viện lớp này, tôi có một vài lớp học và tôi sử dụng Silverlight mẫu NUnit để dự án, trong đó có các unit test cho thư viện lớp Silverlight của tôi:

http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx

tôi có thể chạy thử nghiệm đơn vị tốt (ngay cả trong máy chủ xây dựng, chúng tôi là sử dụng msbuild và TFS) nhưng tôi không thể lấy dữ liệu mã bảo hiểm cho chúng bằng cách sử dụng các tùy chọn phạm vi mã chuẩn có sẵn trong Visual Studio.

NCover có thể hiển thị phạm vi mã cho thư viện lớp bạc của tôi không?

đáp ứng tôi nhận:

Chừng nào bạn đang thử nghiệm các thư viện lớp với NUnit, bạn sẽ có thể để trang trải chúng bằng cách sử NCover. Nếu bạn kiểm tra chúng thông qua trình duyệt web bằng công cụ như Selenium, thì bạn sẽ không thể nhận được bảo hiểm.

Bây giờ tôi tự hỏi liệu có ai trong nhóm bạc đã cố gắng sử dụng NCover + NUnit không? Tất nhiên MS có khuôn khổ kiểm tra đơn vị riêng của họ vì vậy trong "ý thức kinh doanh" nó sẽ không nhìn tốt như vậy :) Nhưng làm thế nào về chỉ cần thử nghiệm cho dù điều này hoạt động.

2

Làm theo quy trình sau và nhận kết quả Bảo hiểm mã;

-Thêm dự án thử nghiệm mới vào giải pháp
-Xoá tất cả các lớp hiện có (Kiểm tra cơ sở dữ liệu, kiểm tra đặt hàng, v.v.) để bạn chỉ còn lại với lớp kiểm tra đơn vị (UnitTest1).
-Xoá tất cả các nhận xét và mã crud vô ích khỏi lớp thử nghiệm để bạn chỉ còn lại phương pháp thử nghiệm (không có nhận xét, thậm chí không phải TestContext)
-Thêm tham chiếu đến phiên bản Silverlight của “System.dll”, “System.Windows.dll” cho dự án thử nghiệm. (thường nằm trong “C: \ Program Files \ Microsoft SDK \ Silverlight \ v2.0 \ Reference Assemblies \” (loại bỏ tham chiếu hiện tại vào hệ thống.dll nếu bạn cần phải đầu tiên)
-Thêm một tài liệu tham khảo cho dự án được kiểm tra
-Bạn bây giờ có thể viết bài kiểm tra đối với các mô hình đối tượng (lớp học tiêu chuẩn)

Chúc mừng,

Ref: http://weblogs.asp.net/rosherove/archive/2008/12/27/unit-testing-in-silverlight-land-with-typemock-isolator.aspx

+0

Tôi đã có thể làm cho nó hoạt động bằng cách đảm bảo tham chiếu đến các hệ thống dlls silverlight 4.0 sdk (System.dll, System.Core.dll, System.Windows.dll) như trái ngược với .Net Assemblies. [Đây là một bài đăng trên blog] (http://nileshgule.blogspot.com/2011/05/unit-test-viewmodel.html) cũng nêu rõ điều này. – leogdion

1

Để làm rõ các bài đăng trước, NCover có thể bao gồm bất kỳ quy trình .NET nào. Nó chưa xử lý CLR Silverlight. Trong các trường hợp được trình bày ở trên, một người dùng đã hỏi về một khuôn khổ kiểm tra .NET để kích hoạt các thử nghiệm .NET của mình chạy trên ứng dụng Silverlight của anh ta. Mọi thứ .NET (ví dụ: khung kiểm tra) sẽ được đề cập trong kịch bản này. Mã Silverlight S W KHÔNG được bảo hiểm.

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