2013-03-11 34 views
9

Trong vài giờ qua tôi đã cố gắng để tạo ra một bài kiểm tra đơn vị cho một ứng dụng Silverlight.Silverlight 5 VS 2012 Unit Unit

Một số bài đăng đề cập đến "Dự án thử nghiệm đơn vị Silverlight" là một phần của Bộ công cụ Silverlight. Nhưng tôi đã tải xuống bộ công cụ và vẫn không có Dự án thử nghiệm, dường như nó chỉ có sẵn trong VS 2010?

Tôi đã thêm một dự án "Silverlight Class Library" và nói thêm tài liệu tham khảo để:

  1. Microsoft.Silverlight.Testing
  2. Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight

và TestClass sau:

using Microsoft.Silverlight.Testing; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace UnitTesting 
{ 
    [TestClass] 
    public class Class 
    { 

     [TestMethod] 
     public void TestMethod() 
     { 
      .....  
     } 
    } 
} 

Nhưng có không có kiểm tra được phát hiện bởi Visual Studio 2012 Test Explorer. Ngay cả sau khi xây dựng lại giải pháp và khởi động lại ứng dụng.

Bất kỳ ai có ý tưởng nào? Điều này thậm chí có thể?

+0

Hãy thử chỉnh sửa csproj tập tin và thêm sau thẻ ' {3AC096D0-A1C2-E12C-1390-A8335801FDAB}; {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}' sau 'ProjectGuid' – sll

+0

Dự án sẽ không tải khi khởi động lại VS: ( –

Trả lời

1

Tôi tin rằng bạn cần phải cài đặt Silverlight Unit Test Adaptor để có được những xét nghiệm để hiển thị trong thử nghiệm Explorer

+2

Đã xảy ra ngoại lệ trong khi người khám phá kiểm tra 'TestDiscoverer' đang tải thử nghiệm. Ngoại lệ: Không thể tải tệp hoặc lắp ráp 'Microsoft.Silverlight.Testing, Version = 5.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'hoặc một trong những phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định. –

+1

Được quản lý để thêm tệp cần thiết vào Global Assembly –

+1

Cập nhật: Chạy thử nghiệm nhưng kiểm tra không hoàn thành ngay cả chỉ với Asssert.AreEqual (đúng, đúng); –

4

Để hoàn thành chủ đề này,

Silverlight Các tệp DLL được đặt trong C: \ Program Files (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Toolkit \ dec11 \ Testing

Tôi không thể nhận được Resharper 7.1 để chạy thử nghiệm nhưng this library đã giúp. Bạn sẽ cần phải giải nén bằng cách sử dụng 7-zip để các DLLS không bị chặn. Sau đó khởi động lại Visual Studio 2012 và Resharper sẽ chạy thử nghiệm đơn vị của bạn.

5

Liên kết này có câu trả lời mà làm việc cho tôi:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/5e991b0d-8061-4c4e-a17d-82b4abd58d6c/vs-2012-silverlight-unittest

I recommend starting a new Silverlight project and installing the SilverlightToolkit-Testing NuGet package. In your test files, put in usings for Microsoft.Silverlight.Testing and Microsoft.VisualStudio.TestTools.UnitTesting and use regular [TestClass] and [TestMethod] attributes. To run them, you can use the Toolkit test runner by putting RootVisual = UnitTestSystem.CreateTestPage(); in your App.Application_Startup(), use Silverlight Unit Test Adapter (which currently is at v0.0.1 and doesn't really work), or (the best approach by far) install ReSharper and the AgUnit plugin.

1

tôi đã có thể chạy một số xét nghiệm:

  1. Với Visual Studio 2012 Professional (với Á hậu kiểm tra).

  2. Tạo nhắm mục tiêu theo thư viện lớp .NET 4.5 với tên như MyProject.Tests.

  3. Tham khảo C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll hoặc từ vị trí của bạn.

  4. Thêm kiểm tra làm thử nghiệm thông thường cho .NET 4.5.

  5. Thêm tài liệu tham khảo dự án để MyProject - nhắm mục tiêu Silverlight 5.

  6. dự án Thêm một số xét nghiệm. Xây dựng.Có thể nhận được lỗi của tài liệu tham khảo còn thiếu: Error 12 The type 'System.Xml.Serialization.IXmlSerializable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Xml, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

  7. Reference C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll

  8. xây dựng và nhận được cùng một lỗi. Mở *.csproj và đảm bảo đường dẫn gợi ý: xml <Reference Include="System.Xml"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Xml.dll</HintPath> </Reference>

  9. Chạy thử nghiệm, ví dụ: qua nhấp chuột phải vào TestMethod ->Run Tests. Có thể nhận được lỗi: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows, Version=5.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. Fix là: <Reference Include="System.Windows"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\System.Windows.dll</HintPath> </Reference>

Ghi chú:

  1. Nhớ lại rằng Silverlight 5 hội có định dạng giống như NET 4.5.
  2. Kiểm tra không thành công vì các phiên bản .NET 4.5 là mặc định cho dự án, chúng tôi cần ghi đè qua HintPath. Tôi nghĩ rằng có thể có cách khác thông qua sửa đổi kịch bản MSBuild và/hoặc chuyển hướng ràng buộc lắp ráp.
  3. Hội đồng lõi .NET được tải từ 4.5, nếu những điều này khác với những thứ Silverlight có thể không thành công. Tôi hy vọng là không.
  4. Các tính năng tùy thuộc vào thời gian chạy Silverlight lưu trữ có thể không thành công. Giống như hiển thị cửa sổ Silverlight hoặc truy cập HTML DOM. Đó là chỉ số tốt để mã refactor được Silverlight thuyết bất khả tri. Có thể lỗi:
 


     Test Outcome: Failed 

     Result Message: 
     System.DllNotFoundException: Unable to load DLL 'agcore': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
     Result StackTrace: 
    at MS.Internal.XcpImports.Application_GetCurrentNative(IntPtr context, IntPtr& obj) 
     at MS.Internal.XcpImports.Application_GetCurrent(IntPtr& pApp) 
     at System.Windows.Application.get_Current() 

 

chỉ cần tải ActiveX thời gian chạy cho SL vào quá trình.

  1. Tham khảo các phiên bản bộ công cụ Silverlight của các hội đồng kiểm tra (với thuộc tính [TestMethod] bên trong) thay vì .NET một dẫn đến việc kiểm tra có thể nhìn thấy, nhưng không chạy.
Các vấn đề liên quan