2013-04-03 12 views
8

Mam abstrakcyjną klasę podstawową, która ma atrybut AssemblyInitialize zastosowany do metody. Ale to nigdy nie zostanie wykonane ... Klasa abstrakcyjnych testów podstawowych znajduje się w innym zestawie, ponieważ ma na celu ogólne rozszerzenie. Wszelkie pomysły, jak to rozwiązać?AssemblyInitialize w klasie pochodnej

Kod

[TestClass] 
public abstract BaseTestClass 
{  
    [AssemblyInitialize] 
    public static void AssemblyInit(TestContext context) 
    { 
     //DoDomething 
    } 
} 

góry dzięki

Odpowiedz

5

Dzieje się tak, ponieważ Zgromadzenie nigdy nie jest inicjowane, jeśli nie uruchamia się z niego testów. Rozwiązanie mogę dać (może głupi jeden) jest użycie AssemblyInitialize w innych zespołach i nazywają podstawy AssemblyInitialize

W TestProject który zawiera testy dodaj następujący kod:

[TestClass] 
public class UnitTest1 
{ 
    [AssemblyInitialize] 
    public static void AssemblyInitialize(TestContext testContext) 
    { 
     // call the base AssemblyInitialize 
     BaseTestProject.BaseTest.AssemblyInitialize(testContext); 
    } 

    public TestContext TestContext { get; set; } 
} 
+0

To samo rozwiązanie zastosowałem jako rozwiązanie tymczasowe. Dzięki! – mrtentje

5

próbować realizować oddzielną klasę bez dziedziczenia w projekcie testowym:

[TestClass] 
public static class YourClass 
{ 
    [AssemblyInitialize] 
    public static void AssemblyInit(TestContext context) 
    { 
     //DoSomething 
    } 
} 

powinna być wywołana.

3

miałem ten sam problem, gdy nie oznaczyłem bazowej klasy testowej atrybutem [TestClass].

Powiązane problemy