2011-08-31 36 views
8

Tôi đang tạo thử nghiệm web trong Selenium bằng MSTest và muốn chụp ảnh màn hình mỗi lần thử nghiệm không thành công nhưng tôi không muốn thử nghiệm mỗi lần kiểm tra .Trong MSTest làm thế nào để kiểm tra xem thử nghiệm cuối cùng đã trôi qua (trong TestCleanup)

Điều tôi muốn làm là đặt chức năng chụp màn hình bên trong phương thức [TestCleanup] và chạy nó nếu thử nghiệm không thành công nhưng không phải nếu thử nghiệm được thông qua. Nhưng làm thế nào để tôi tìm ra nếu một thử nghiệm cuối cùng được thông qua?

Hiện tại tôi đang làm bool = false trên [TestInitialize]bool = true nếu thử nghiệm chạy qua.

Nhưng tôi không nghĩ đó là giải pháp tốt.

Vì vậy, về cơ bản, tôi đang tìm cách phát hiện xem thử nghiệm cuối cùng đúng/sai khi thực hiện [TestCleanup].

Trả lời

2

Câu trả lời bởi @MartinMussmann là đúng, nhưng không đầy đủ. Để truy cập vào "TestContext" object bạn cần phải chắc chắn để khai báo nó như là một tài sản trong TestClass của bạn:

[TestClass] 
public class BaseTest 
{ 
    public abstract TestContext TestContext { get; } 

    [TestCleanup] 
    public void TestCleanup() 
    { 
     if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
     { 
      // some code 
     } 
    } 
} 

này cũng được đề cập trong following post.

+0

Đúng vậy, nhưng đoạn mã đã cho tôi lỗi "TestContext phải thuộc loại TestContext, phải là không tĩnh, công khai và không được chỉ đọc". Vì vậy, tôi đã thay đổi thuộc tính thành: 'public TestContext TestContext {get; bộ; } ' – LambdaCruiser

+0

@LambdaCruiser Chính xác, tôi đã cập nhật câu trả lời với đề xuất đó –

11

Giải pháp

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
{ 
    // some code 
} 
Các vấn đề liên quan