2013-02-19 38 views
6

Tôi đang sử dụng khung kiểm tra Microsoft Fakes. Không có nhiều cách xung quanh nó như tôi cần phải sử dụng cách tiếp cận shim/nốt ruồi do mã "di sản" mà tôi không thể thay đổi. Đó là mã từ một nhà cung cấp không có nguồn, nó được viết mà không cần kiểm tra trong tâm trí. Vì vậy, tôi đang mắc kẹt với 3 khuôn khổ có thể, TypeMock (đắt tiền), JustMock của Telerik (đắt tiền) hoặc của Microsoft Fakes. Như chúng tôi đã có VS Ultimate, chúng tôi đang lựa chọn cho các giả. Như hầu hết mọi người cảm thấy họ cần đề nghị viết lại hoặc sửa đổi mã theo một cách nào đó để hỗ trợ bằng cách sử dụng giao diện và/hoặc tiêm phụ thuộc Tôi sẽ cho bạn biết trước, đây không phải là một tùy chọn.Microsoft Fakes x64 không x86 và v4.5

Một trong những vấn đề tôi gặp phải là thư viện tôi đang cố giả mạo là rất lớn và yêu cầu sử dụng phiên bản 64 bit của fakes.exe chứ không phải 32 bit (fakes.x86.exe), nó chạy vào giới hạn bộ nhớ của các ứng dụng 32 bit.

Vấn đề thứ hai là tôi cần biên dịch thư viện giả sử dụng khung công tác v4.5. Nó có thể thông qua dòng lệnh, mặc dù không có giấy tờ. Lý do là trong v4.5 họ thêm giao diện IReadOnly * trong System.Collections.Generic và thư viện sử dụng chúng. Biên dịch với v4, ném một lỗi cho biết các loại không được tìm thấy, như mong đợi.

Vấn đề, Visual Studio luôn sử dụng phiên bản x86 và khung công tác v4.0 và tôi không thể tìm cách ghi đè nó. Có ai biết làm thế nào để có được nó để sử dụng khuôn khổ 64 và v4.5? Ý tưởng hiện tại của tôi là không sử dụng nội dung dựng sẵn của studio trực quan và chỉ sử dụng dòng lệnh và tham chiếu thủ công tệp. Sau đó, trên mỗi cập nhật của dll, chúng tôi sẽ tự tạo lại nó và cập nhật tham chiếu. Tệp này không được cập nhật rất thường xuyên để có khả năng.

Các dòng lệnh tôi sử dụng để tự tạo ra các thư viện hàng giả (ai đó có thể tìm thấy điều này hữu ích) là:

"c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\fakes\fakes.exe" <assembly> /tfv:v4.5 

Sự giúp đỡ lệnh chỉ cho thấy rằng v2, v3.5 và v4 những lựa chọn có thể cho TFV, nhưng chỉ cho đá tôi đã thử v4.5.

Tôi đã cố gắng buộc kiến ​​trúc trên ứng dụng x64 thay vì bất kỳ CPU nào, không thay đổi trong đó fakes.exe nó chạy. Tìm trong tệp .csproj để kiểm tra, không thay đổi. Nhìn vào tệp .csproj mà fakes.exe và nó nói để sử dụng v4 của khuôn khổ, mở trong studio trực quan, thay đổi thành v4.5, biên dịch tốt. Sử dụng dòng lệnh giả mạo, biên dịch tốt. Có một thuộc tính trong tệp .fakes trong dự án cho phép phiên bản trình biên dịch được xác định, nhưng thiết lập nó thành v4.5 vẫn không hoạt động. Tôi giả định rằng sự thay đổi phiên bản trong visual studio từ v4 đến v4.5 cũng thay đổi tham chiếu assembly. Thử tiếp theo của tôi là thử và thay đổi dự án mẫu nếu tôi có thể tìm thấy nó.

+0

Bạn thậm chí chắc chắn có một Phiên bản 64 bit của fakes.exe? –

+0

Có, bạn có thể chạy thủ công bằng cách sử dụng lệnh tôi đã hiển thị. 32 bit là fakes.x86.exe. – Edward

+0

Tôi đã có thể làm cho v4.5 hoạt động bằng cách thiết lập dự án thử nghiệm đơn vị thành 4.5 và đóng giải pháp và mở lại nó. Không chắc chắn lý do tại sao tôi phải đóng studio trực quan ... Thật không may nó đã không giải quyết được vấn đề 32/64 bit. – Edward

Trả lời

1

thể chỉ nghĩ đến những điều sau đây (xin lỗi nếu nó đã được thiết lập):

'thử nghiệm' -> 'Test Settings' - 'Kiến trúc Mặc định xử lý'> -> 'X64'

+0

Đã được đặt. Đã thử x64 và CPU bất kỳ. Không khác nhau. – Edward

+0

Không có sự khác biệt về việc thay đổi kiến ​​trúc trong dự án và tôi chỉ thử Cài đặt thử nghiệm và không thay đổi. – Edward

0

Thật không may tôi đã không thể tìm ra cách để có được phòng thu trực quan để chạy fakes.exe thay vì fakes.x86.exe. Khác hơn là sao chép fakes.exe trên fakes.x86.exe. Mặc dù vậy, mặc dù vậy, một gợi ý mà Microsoft đưa ra về việc sử dụng hàng giả để tăng tốc độ là chỉ tham chiếu các giả tạo đã tạo và đảm bảo các tham chiếu bắt buộc nằm trong dự án thử nghiệm của bạn. Mà theo mặc định dường như là Microsoft.VisualStudio.QualityTools.UnitTestFramework. Làm điều này sẽ không chỉ cho phép tôi sử dụng hàng giả, mà còn giảm thời gian xây dựng vì thư viện giả không cần phải tạo thêm nữa. Không phải giải pháp yêu thích của tôi, nhưng nó có một lợi thế với tốc độ. Vì vậy, tôi sẽ đi tuyến đường đó.

Nhờ những người đã giúp giải quyết vấn đề này.

Tóm tắt để nhận phiên bản 4.5 để biên dịch ... đảm bảo phiên bản làm việc cho dự án thử nghiệm đơn vị của bạn là 4.5 và nếu thay đổi từ 4.0, đóng và mở lại studio trực quan.

+2

Có tài liệu nào minh họa cách "tham chiếu dll giả tạo đã tạo và đảm bảo các tham chiếu bắt buộc có trong dự án thử nghiệm của bạn" không? – schellack

4

@schellack - Đây là cách tôi đã có thể "tham khảo các giả dll tạo và chắc chắn rằng các tài liệu tham khảo cần thiết là trong dự án thử nghiệm của bạn"

  1. Biên dịch và chạy tất cả các bài kiểm tra đơn vị tại địa phương, và chắc chắn rằng họ vượt qua
  2. Trong thư mục chính của dự án, cùng một vị trí với tệp .csproj, bây giờ sẽ có một thư mục "FakesAssemblies". Trong thư mục sẽ được tạo ra System.Web.Mvc.4.0.0.0.Fakes.dll (hoặc bất kỳ số phiên bản bạn đang sử dụng). Dự án tham chiếu đến System.Web.Mvc.4.0.0.0.Fakes có một đường dẫn gợi ý đến thư mục này và dll rồi. Cả thư mục này và dll cần được thêm vào điều khiển nguồn. Chúng không cần phải được thêm vào VS.
  3. Để máy xây dựng CI của chúng tôi biên dịch, tôi cũng phải thêm Microsoft.QualityTools.Testing.Fakes.dll vào dự án.
    1. tôi thấy Microsoft.QualityTools.Testing.Fakes.dll trong C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PublicAssemblies
    2. Trong thư mục chính của dự án, cùng một vị trí như. Tệp csproj, có một thư mục "Fakes" được bao gồm trong dự án (hiển thị trong VS) cũng như dưới sự kiểm soát nguồn. Nó có một tệp .fakes trong đó. Tôi sao chép Microsoft.QualityTools.Testing.Fakes.dll vào thư mục này, thông qua VS để nó cũng được thêm vào dự án.
    3. Đường dẫn gợi ý trong tệp .csproj của dự án cần phải được thêm/cập nhật để tìm trong thư mục Fakes. Tôi tìm thấy tài liệu tham khảo trong file csproj của tôi và thay đổi nó trông như thế này:

<Reference Include="Microsoft.QualityTools.Testing.Fakes, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <HintPath>Fakes\Microsoft.QualityTools.Testing.Fakes.dll</HintPath> 
</Reference> 

Bây giờ tất cả mọi thứ biên dịch và kiểm tra đơn vị chạy

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