2013-02-08 26 views
17

Tôi đang viết các kiểm tra đã mã hóa và tôi có ứng dụng mở nếu nó chưa được mở. Sau đó, nếu một trong số họ thất bại tôi đóng ứng dụng điều này là tôi có nhiều bài kiểm tra trong nhiều dự án là có một cách để đóng ứng dụng sau khi tất cả các bài kiểm tra được thực hiện thực hiện? Có thể có điều gì đó trong tệp testSettings không?Có thể chạy mã sau khi tất cả các bài kiểm tra hoàn thành việc thực hiện trong MStest

Nếu điều này giúp ích, tất cả các lớp thử nghiệm của tôi lấy được từ một codeduiTestBase, đó là cách tôi thiết lập các cài đặt tôi có.

Tôi không muốn phải mở và đóng ứng dụng trước và sau mỗi lần chạy thử vì nó là một ứng dụng lớn và tải quá lâu.

Trả lời

35

Có thể thực hiện được. Bạn có thể sử dụng thuộc tính AssemblyCleanup cho mục đích này:

Xác định một phương pháp có chứa mã được sử dụng sau khi tất cả kiểm tra trong lắp ráp đã chạy và tài nguyên miễn phí thu được bằng cách lắp ráp.

Dưới đây là một cái nhìn tổng quan của tất cả các phương pháp MSTest sắp xếp theo thời gian thực hiện:

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using SampleClassLib; 
using System; 
using System.Windows.Forms; 

namespace TestNamespace 
{ 
    [TestClass()] 
    public sealed class DivideClassTest 
    { 
     [AssemblyInitialize()] 
     public static void AssemblyInit(TestContext context) 
     { 
      MessageBox.Show("AssemblyInit " + context.TestName); 
     } 

     [ClassInitialize()] 
     public static void ClassInit(TestContext context) 
     { 
      MessageBox.Show("ClassInit " + context.TestName); 
     } 

     [TestInitialize()] 
     public void Initialize() 
     { 
      MessageBox.Show("TestMethodInit"); 
     } 

     [TestCleanup()] 
     public void Cleanup() 
     { 
      MessageBox.Show("TestMethodCleanup"); 
     } 

     [ClassCleanup()] 
     public static void ClassCleanup() 
     { 
      MessageBox.Show("ClassCleanup"); 
     } 

     [AssemblyCleanup()] 
     public static void AssemblyCleanup() 
     { 
      MessageBox.Show("AssemblyCleanup"); 
     } 

     [TestMethod()] 
     [ExpectedException(typeof(System.DivideByZeroException))] 
     public void DivideMethodTest() 
     { 
      DivideClass.DivideMethod(0); 
     } 
    } 
} 

see: MSTest-Methods

+1

Cảm ơn bạn đã làm việc. Tôi không nghĩ rằng nó sẽ hoạt động vì chúng ở trong các dự án khác nhau và do đó trong các hội đồng khác nhau. – jgerstle

0

Nếu bạn chỉ muốn dọn dẹp sau khi tất cả các bài kiểm tra bên trong một lớp học duy nhất đã kết thúc , sử dụng thuộc tính ClassCleanup thay vì thuộc tính AssemblyCleanup

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