2013-02-08 31 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属性

相关问题