Chúng tôi đang sử dụng thử nghiệm thử nghiệm VS 2010 (MSTest) để kiểm tra chức năng tự động. Khi chúng tôi chạy thử nghiệm từ Visual Studio, VS tạo ra một quá trình gọi là QTAgent32.exe, và nó chạy các bài kiểm tra trong quá trình đó.Tôi có thể buộc MSTest sử dụng quy trình mới cho mỗi lần chạy thử không?
Chúng tôi thấy rằng khi chúng tôi thực hiện nhiều lần chạy thử, MSTest sẽ sử dụng lại quy trình QTAgent32 tương tự - ID tiến trình không thay đổi. Đây là một vấn đề đối với chúng tôi, vì mã chúng tôi đang thử nghiệm là P/Gọi đến một DLL không được quản lý. DLL cần được khởi tạo chỉ một lần trong suốt vòng đời của quá trình. Chúng ta có một phương thức [AssemblyInitialize], nhưng nó thực hiện một lần cho mỗi lần chạy thử nghiệm. Nếu chúng tôi thực hiện nhiều lần chạy thử, nó sẽ thực thi nhiều lần trong cùng một quá trình.
Mỗi lần chúng tôi chạy thử nghiệm, MSTest tạo một miền ứng dụng mới; nhưng các appdomain này đều nằm trong cùng một tiến trình.
Vì vậy, tôi tự hỏi: có cách nào để nói với nhân viên thử nghiệm Visual Studio sử dụng quy trình mới mỗi khi chúng tôi chạy thử nghiệm không? Tôi đã xem xét cấu hình ".testsettings" nhưng không thấy bất cứ điều gì liên quan.
Chỉ vì sự tò mò của tôi - có thể là DLL không được quản lý không được tải sau mỗi lần kiểm tra liên tiếp với 'FreeLibrary'? –
Cảm ơn Wiktor - gợi ý tốt. Ngay bây giờ mã chỉ tham chiếu tĩnh các API không được quản lý, sử dụng các thuộc tính [DllImport] trên khai báo hàm C# extern. Tôi giả sử .NET không tự động giải phóng thư viện khi appdomain bị rách, vì chúng ta đang gặp lỗi. Tôi không thực sự biết làm thế nào để gọi một DLL động nạp từ mã C# - bạn có thể gọi LoadLibrary() và GetProcAddress(), và sau đó bằng cách nào đó đúc con trỏ hàm trả về cho một loại đại biểu? Dù sao, tôi sẽ nhìn vào nó - cảm ơn! Tôi chỉ tìm thấy điều này có thể giúp: http://www.codeproject.com/KB/cs/dyninvok.aspx –