2013-02-08 58 views
17

我正在編寫編碼的ui測試,並且如果應用程序尚未打開,我已將其打開。然後,如果其中一個失敗,我關閉應用程序的事情是我有多個項目中的多個測試是否有辦法在所有的測試完成後關閉應用程序? testSettings文件中是否有某些內容?是否有可能在所有測試在MStest中執行完畢後運行代碼

如果這有幫助的話,我所有的測試類都來自一個codeduiTestBase,這就是我設置我所擁有的設置的方法。

我不想在每次測試運行之前和之後打開和關閉應用程序,因爲它是一個很大的應用程序,加載時間太長。

回答

35

是的,這是可能的。您可以使用AssemblyCleanup屬性用於此目的:

標識包含畢竟測試中 大會已經運行,並通過大會獲得免費資源的利用代碼的方法。

這裏是按照執行時間排列的所有MSTest的方法的概述:

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); 
     } 
    } 
} 

見:MSTest-Methods

+1

甜的工作謝謝。我不認爲這是可行的,因爲他們在不同的項目中,因此在不同的程序集中。 – jgerstle 2013-02-08 15:51:08

0

如果你只是想要一個類中的所有測試後清理已經完成,使用ClassCleanup屬性而不是AssemblyCleanup屬性

相關問題