2013-02-08 12 views
17

piszę kodowanych testów UI i mam otwartą aplikację, jeśli nie jest już otwarty. Jeśli jedno z nich zawiedzie, zamykam aplikację, to znaczy, że mam wiele testów w wielu projektach, czy istnieje sposób na zamknięcie aplikacji po wykonaniu wszystkich testów? Czy jest coś w pliku testSettings?Czy jest możliwe aby uruchomić kod po zakończeniu wykonywania wszystkich testów w MSTest

Jeśli to pomaga w ogóle, wszystko moich klas testowych wynika z jednej codeduiTestBase która jest jak skonfigurować ustawienia mam.

nie chcę mieć, aby otworzyć i zamknąć aplikację przed i po każdym badaniu działa, ponieważ jest to wielki aplikacji, a to trwa zbyt długo, aby załadować.

Odpowiedz

35

Tak, jest to możliwe. Można użyć atrybutu AssemblyCleanup do tego celu:

Określa metodę, która zawiera kod należy stosować po wszystkie testy w podczas montażu i uruchomienia do wolnych środków uzyskanych przez zespół.

Oto przegląd wszystkich MSTest metod ułożone według czasu wykonywania:

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

patrz: MSTest-Methods

+1

słodkie, że pracował dzięki. Nie sądziłem, że to zadziała, ponieważ są w różnych projektach, a zatem w różnych zgromadzeniach. – jgerstle

0

Jeśli chcesz po prostu posprzątać po wszystkich testach wewnątrz jednej klasy są gotowe , użyj ClassCleanup atrybutów zamiast AssemblyCleanup przypisują

Powiązane problemy