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
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.
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
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
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