2013-04-03 26 views
8

Ho una classe di test di base astratta che ha un attributo AssemblyInitialize applicato a un metodo. Ma non verrà mai eseguito ... La classe di test di base astratta è in un altro assembly perché è per un'estensione generica. Qualche idea di come si possa risolvere?AssemblyInitialize nella classe derivata

Il codice

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

Grazie in anticipo

risposta

5

Ciò accade perché l'assieme non viene mai inizializzato se non si eseguono test da esso. Una soluzione che posso dare (forse un pazzo uno) è quello di utilizzare il AssemblyInitialize sulle altre assemblee e chiamare la base AssemblyInitialize

In un TestProject che contiene prove di aggiungere il seguente codice:

[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

La stessa soluzione che ho implementato come soluzione alternativa. Grazie! – mrtentje

5

cercare di attuare una classe separata senza eredità nel progetto di prova:

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

dovrebbe essere chiamato.

3

ho avuto la stesso problema quando non ho contrassegnato la classe base di test con l'attributo [TestClass].

Problemi correlati