Khi cố gắng chạy thử nghiệm WatiN 2.0 (CTP3) rất đơn giản trong Visual Studio 2008, tôi thấy rằng đầu tiên luôn thực hiện tốt. Phương pháp thử nghiệm thứ hai dường như phá vỡ một cái gì đó trong đối tượng IE sản xuất các ngoại lệ sau đây:WatiN trong Visual Studio 2008 - phương pháp thử thứ hai không thành công
Phương pháp thử testProject.WatinTest.testTwo ném ngoại lệ: System.Runtime.InteropServices.InvalidComObjectException: COM đối tượng đó đã được được tách riêng từ RCW cơ bản không thể là được sử dụng ..
Mã mẫu bên dưới. Do cách thức khởi tạo là workin trong VS2008 biến trình duyệt phải được định nghĩa là static
mà tôi tin rằng có thể là chìa khóa cho vấn đề. Thật không may, trừ khi trình duyệt được mở trong phương thức chung, nó có nghĩa là một cửa sổ riêng biệt cho mọi thử nghiệm không phải là lý tưởng
Tôi rất biết ơn mọi ý tưởng về cách khắc phục điều đó. Tìm kiếm của Google và tìm kiếm SO không tạo ra bất kỳ kết quả hữu ích nào vì vậy tôi hy vọng rằng câu trả lời hay cho câu hỏi này sẽ giúp cộng đồng. Rất cám ơn,
private static IE ie
[ClassInitialize]
public static void testInit(TestContext testContext)
{
ie = new IE("http://news.bbc.co.uk");
}
[TestMethod]
public void testOne()
{
Assert.IsTrue(ie.ContainsText("Low graphics"));
}
[TestMethod]
public void testTwo()
{
Assert.IsTrue(ie.ContainsText("Low graphics"));
}
Brilliant, Jeroen. Đó là một câu trả lời tuyệt vời và tôi thực sự hy vọng nó sẽ giúp rất nhiều người có cùng một vấn đề. Ngoài ra tôi hy vọng rằng bây giờ giữa blog của bạn và SO Google sẽ có thể đưa ra gợi ý có ý nghĩa khi mọi người sẽ tìm kiếm giải pháp –
Tôi đã phải sử dụng mã của Nailuj (dựa trên mã của bạn) cho phiên bản mới nhất của WatiN. Tuy nhiên, tôi đã nhận được ngoại lệ trên ClassCleanup và không thể có được trình duyệt để xử lý mà không giết chết quá trình với Process.Kill() ... đó là một giải pháp xấu xí: ( –