2014-07-06 11 views
5

Tôi là using Microsoft.VisualStudio.TestTools.UnitTesting; nhưng phương pháp tôi đánh dấu là [TestInitialize] không được gọi trước khi thử nghiệm. Tôi chưa bao giờ sử dụng khung kiểm thử đặc biệt này trước đây nhưng trong mọi khung công tác khác luôn có cách đăng ký một phương thức Thiết lập và TearDown sẽ tự động chạy trước và sau mỗi lần thử nghiệm duy nhất. Đây không phải là trường hợp với các công cụ kiểm tra trực quan đơn vị kiểm tra khuôn khổ?tại sao TestInitialize không được gọi tự động?

[TestClass] 
public class RepoTest 
{ 
    private const string TestConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=RepoTest; Trusted_Connection=True;"; 
    private const string MasterConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=master; Trusted_Connection=True;"; 

    [TestInitialize] 
    private void Initialize() 
    { 
     using(var connection = new SqlConnection(MasterConnectionString)) 
     using(var command = new SqlCommand(Resources.Initialize, connection)) 
     { 
      command.ExecuteNonQuery(); 
     } 
    } 

    [TestCleanup] 
    private void Cleanup() 
    { 
     using (var connection = new SqlConnection(MasterConnectionString)) 
     using (var command = new SqlCommand(Resources.Cleanup, connection)) 
     { 
      command.ExecuteNonQuery(); 
     } 
    } 

    [TestMethod] 
    public void CreateARepo() 
    { 
     var repo = new Repo(TestConnectionString); 
    } 
} 
+0

Có thể cần phải công khai. –

Trả lời

7

Đặt InitializeCleanup công khai. Bạn cũng có thể kiểm tra, tại số msdn tất cả các ví dụ đều có người truy cập công khai.

Để tái sản xuất, làm cho lớp thử nghiệm như:

[TestClass] 
public class Tests 
{ 
    [TestInitialize] 
    public void Initialize() 
    { 
     Console.WriteLine("initialize"); 
    } 

    [TestCleanup] 
    public void Cleanup() 
    { 
     Console.WriteLine("cleanup"); 
    } 

    [TestMethod] 
    public void Test() 
    { 
     Console.WriteLine("test body"); 
    } 
} 

kiểm tra Điều đó sẽ tạo ra kết quả như sau:

enter image description here

Làm InitializeCleanup tin, bạn sẽ chỉ thấy test body đang được in trên bảng điều khiển:

enter image description here

sử dụng lắp ráp Microsoft.VisualStudio.QualityTools.UnitTestFramework như là phiên bản thử nghiệm đơn vị khung 10.1.0.0 và ReSharper 8.2 như một Á hậu kiểm tra.

Các vấn đề liên quan