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ó.
Bạn thậm chí chắc chắn có một Phiên bản 64 bit của fakes.exe? –
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
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