2012-01-19 15 views
11

Có tương đương không tĩnh với [ClassCleanup] của MSTest & [ClassInitialize] không?Có tương đương không tĩnh với [ClassCleanup] và [ClassInitialize] của MSTest không?

Tôi đang sử dụng MSTest cho một số kiểm tra mức hệ thống/tích hợp và tôi không muốn phải lo lắng về việc làm sạch & khởi tạo kết nối trong các thử nghiệm.

Ví dụ Code:

[TestClass] 
public class DefectCreatorTest 
{ 
    private long _cookie; 
    private soapcgi _soap; 

    [ClassInitialize] 
    public void Initialize() 
    { 
     _soap = new soapcgi {Url = "http://localhost:80/scripts/soapcgi.exe"}; 
     _cookie = Transaction.Login(_soap); 
    } 

    [ClassCleanup] 
    public void TearDown() 
    { 
     Transaction.Logout(_cookie, _soap); 
    } 

    [TestMethod] 
    public void CreateDefectTest() 
    { 
     var result = _soap.Foo(); 
     Assert.AreEqual("bar", result); 
    } 
} 
+0

Bạn có ý nghĩa gì khi không tĩnh? có gì sai với mã ví dụ của bạn? – seldary

+0

Mã ví dụ biên dịch, nhưng sẽ không chạy. Phương pháp được trang trí với ClassInitialize cần phải là một phương pháp tĩnh. –

+0

Bài kiểm tra sẽ không chạy vì phương thức Initialize cần để có TestContext được chuyển vào phương thức thiết lập, ngay cả khi nó không được sử dụng. –

Trả lời

6

Trả lời câu hỏi của bạn, như xa như tôi biết - Không, đó không phải là một tổ chức phi tĩnh tương đương trong MSTest.

Nhưng:

  1. nhìn vào mã của bạn, không có lý do tại sao _cookie_soap không nên được thực hiện tĩnh, cùng với InitializeTearDown. Làm như vậy sẽ cho phép bạn quên những lo lắng về cấu hình trong quá trình viết thử ...
  2. Nếu bạn sẵn sàng "nhảy tàu", tương đương NUnit cho [ClassCleanup] & [ClassInitialize] có thể được áp dụng cho phương pháp thể hiện tĩnh &.