2013-07-17 30 views
9

Tôi đang viết kiểm tra cho một ứng dụng bằng cách sử dụng Outlook Redemption, hoàn toàn phải chạy 64 bit (nó kết nối với các cửa sổ MAPI và Outlook x64). Thật không may, tôi không thể cho cuộc sống của tôi làm cho nó chạy thử nghiệm trong 64-bit. Tôi đã thử sử dụng tệp .runsettings (được chỉnh sửa để chỉ ra 64 bit) và tệp .testsettings (cũng đã chỉnh sửa) và cuối cùng tôi đã chọn Test>TestSettings>Default Processor Architecture>64-bit, không có kết quả.MSTest từ chối chạy 64 bit?

Mỗi lần, System.Environment.Is64BitProcess là sai và khi tôi tải dll để kết nối với Outlook và MAPI, tôi nhận được ngoại lệ COM đáng sợ: Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP)) cho biết rằng Outlook 64 bit được cài đặt và quá trình đang cố gắng truy cập nó là 32-bit.

Tôi đã khởi động lại VS 2012 sau khi thực hiện các thay đổi cài đặt vì tôi đã đọc ở đâu đó rằng có thể cần khởi động lại. Có ai có bất cứ đề nghị nào khác không? Tôi có thể chỉ viết ứng dụng này làm ứng dụng bảng điều khiển chạy kiểm tra không chính thức và báo cáo trạng thái của chúng, nhưng bước tiếp theo của tôi là làm cho các thử nghiệm này được tích hợp vào bản dựng tự động. Mọi sự trợ giúp sẽ rất được trân trọng.

Sửa

Ảnh chụp màn hình của trang Cài đặt máy chủ trong .testsettings enter image description here

Thử nghiệm

Điều thú vị, tôi đã làm một thí nghiệm nhỏ. Tôi đã tạo một giải pháp mới với một dự án ứng dụng giao diện điều khiển duy nhất. Tôi đặt một phương pháp công cộng trong đó mà chỉ trở lại đúng sự thật. Khi tôi chạy ứng dụng giao diện điều khiển, và tạm dừng thực hiện, tôi nhìn và thực sự nó đang chạy 64-bit; không có vấn đề ở đó. Sau đó tôi thêm một dự án thử nghiệm, tạo ra một thử nghiệm duy nhất được gọi là phương pháp. Tôi cũng đã thêm var is64 = Environment.Is64bitProcess và đặt điểm ngắt sau nó.

Dự đoán, mà không thay đổi bất kỳ tùy chọn nào, is64 là sai. Tôi đã chọn kiến ​​trúc mặc định 64 bit từ trình đơn thả xuống trong thử nghiệm, sau đó làm sạch giải pháp và chạy lại kiểm tra, kết quả tương tự, chạy 32 bit. Tôi khởi động lại VS2012, làm sạch, xây dựng, cùng một kết quả. Tôi đã tạo một tệp kiểm tra và tham chiếu nó trong menu Kiểm tra, xây dựng sạch, giống nhau, khởi động lại, làm sạch, xây dựng giống nhau. Tôi đã tạo một tệp runettings, thiết lập <TargetPlatform>x64</TargetPlatform>, được tham chiếu trong trình đơn kiểm tra, chạy qua tất cả một lần nữa và đã đưa ra kết quả tương tự. QTAgent32.exe tiếp tục chạy quá trình, và hoàn toàn từ chối để chú ý đến nhu cầu của tôi rằng nó chạy 64 bit.

Tôi thề, nếu tôi phải xóa QTAgent32.exe và đổi tên QTAgent thành tên đó, tôi sẽ. Tôi không ở trên nhồi nhét mong muốn của tôi xuống cổ họng máy tính khi nó muốn được bướng bỉnh. Xin vui lòng, nếu bạn không muốn nhìn thấy tôi ngược đãi một máy trạm, một người nào đó cho tôi thấy những gì đang xảy ra. Hãy nghĩ về các máy tính.

+0

Có lẽ là một câu hỏi ngu ngốc, nhưng bạn có chắc chắn rằng đây là những "Cài đặt" đã chọn cho thử nghiệm của bạn không? – Schaliasos

+0

Yup. Đường dẫn menuitem trong menu Test tương ứng với tập tin đó có một dấu kiểm bên cạnh nó. – CodeWarrior

+0

họ đã sửa lỗi này vào năm 2012. Có một máy chủ thử nghiệm 64 bit. Giống như khác cho biết bạn có thể sử dụng corflags để loại bỏ cờ 32-bit chỉ từ mstest và sau đó có một số thiết lập đăng ký giấy phép cần phải được sao chép từ nút registry wow, và thiết lập các execionhost để msil. Trong nhóm của tôi, chúng tôi không thể thêm các thiết lập registry để xây dựng các máy vì vậy tôi đã viết một ứng dụng nhỏ tạo ra một assembly proxy với siêu dữ liệu thử nghiệm và các bài kiểm tra, khi các bài kiểm tra được thực hiện proxy tải các dll thử nghiệm và thực hiện các bài kiểm tra thực tế – user1985513

Trả lời

3

Đây là một chút ngoài phạm vi của tôi, nhưng cài đặt cấu hình cho cả hai dự án được đặt chính xác, đúng không? Bạn có họ thiết lập để xây dựng cho AnyCPU hoặc x64?

Chỉ cần cố gắng để Occam của Razor nó ra ... Tôi biết tôi đã thất vọng quá nhiều lần bởi các thiết lập cấu hình mà VS chỉ kỳ diệu quyết định thay đổi trên tôi.

+0

Thật vậy. AnyCPU được đặt, tôi đang chạy trên máy x64 với hương vị x64 của Windows 7. – CodeWarrior

11

Nếu bạn sử dụng VS2012, khi đó bạn sẽ có thể chọn nền tảng x64 thông qua các cài đặt thử nghiệm như sau;

enter image description here

Trong ví dụ này tôi đang đề cập đến tệp .runsettings. các thiết lập được

enter image description here

Nhưng nếu mong muốn để chạy thử nghiệm của bạn thông qua dòng lệnh bạn cần phải sử dụng vstest.console.exe thay vì MSTest vì nó không hỗ trợ cho x64 test.dlls

bạn sẽ tìm thấy vstest.console.exe tại "C: \ Program Files (x86) \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \"

Xin lưu ý dưới đây bước

01.
  1. mở CMD
  2. Navigate to "C: \ Program Files (x86) \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \"
  3. thực hiện vstest.console.exe "C: \ Projects \ Test \ Test.Automation.Specs.dll"/ InIsolation /nền tảng: x64

Lưu ý: Test.Automation.Specs.dll là dự án thử nghiệm của bạn và bạn cần phải xác định đường dẫn đầy đủ

tôi hy vọng điều này giúp đỡ

2

Tôi đã gặp sự cố tương tự ngay bây giờ. Dưới đây là các bước bạn có thể làm theo để khắc phục sự cố.

  1. kiến ​​trúc vi xử lý chuyển mạch mặc định cho unit tests từ x86 đến x64: Đến Test-> Kiểm tra Settings-> Default Processor Architecture-> x64. Screenshot for changing the default processor architecture to x64 for test settings.
  2. Thay đổi cài đặt Bản dựng cho dự án thử nghiệm đơn vị thành x64. Screenshot for changing the build settings to x64.
  3. Làm sạch dung dịch rồi xây dựng lại giải pháp. Kiểm tra đơn vị của bạn giờ đây sẽ hiển thị trong trình khám phá thử nghiệm và bạn không nên gặp sự cố này nữa.

Tài liệu tham khảo

  1. Link to MSDN reference which explains how to resolve the issue.
+0

Cảm ơn bạn đã trả lời. Bạn đang sử dụng phiên bản Visual Studio nào? Vào thời điểm mà tôi đăng câu hỏi này, tôi đã sử dụng Visual Studio 2012. Tôi chưa bao giờ khoanh lại vấn đề này (tôi đã thực sự thay đổi công việc ba lần kể từ đó!) Vì vậy hy vọng Microsoft đã thực hiện đầy đủ hỗ trợ x64 để thử nghiệm thay vì chỉ nói đã được thực hiện khi thực tế nó không phải. – CodeWarrior

+1

Tôi đang sử dụng Visual Studio 2015. – user3613932

+0

Được rồi. MSTest có thể chạy thử nghiệm trong 64-bit trong VS 2015. Cảm ơn! – CodeWarrior

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