2011-03-02 15 views
7

Tengo algunos métodos que se utilizan para inicializar y limpiar una base de datos que estoy usando con mis pruebas, pero mis métodos con los atributos AssemblyInitialize y AssemblyCleanup no se activan.AssemblyCleanup no dispara

¿Alguna idea?

[TestInitialize] 
    public void Init() 
    { 
     LoadData(); 
    } 

    [AssemblyInitialize] 
    public void AssemblyInit() 
    { 

    } 

    public void LoadData(string testDataFileName = "TestData.xml") 
    { 
     connectionString = ConfigurationManager.ConnectionStrings["NDbUnit"].ConnectionString; 

     mySqlDatabase = new NDbUnit.Core.SqlClient.SqlDbUnitTest(connectionString); 

     mySqlDatabase.ReadXmlSchema("DataSet.xsd"); 
     mySqlDatabase.ReadXml(testDataFileName); 

     mySqlDatabase.PerformDbOperation(NDbUnit.Core.DbOperationFlag.CleanInsertIdentity); 

     dataSet = mySqlDatabase.CopyDataSet(); 
    } 

    [AssemblyCleanup] 
    public void RemoveDatabases() 
    { 
     List<string> databasesToDelete = new List<string>(); 
     ServerConnection serverConnection = new ServerConnection(new SqlConnection(connectionString)); 
     Server server = new Server(serverConnection); 
     foreach (Database db in server.Databases) 
     { 
      if (db.Name.ToLower().Contains(testDatabaseIdentifier)) 
      { 
       databasesToDelete.Add(db.Name); 
      } 
     } 
     databasesToDelete.ForEach(x => 
     { 
      Database db = new Database(server, x); 
      db.Refresh(); 
      db.Drop(); 
     }); 
    } 

    [TestCleanup] 
    public void CleanUpData() 
    { 
     mySqlDatabase.PerformDbOperation(NDbUnit.Core.DbOperationFlag.DeleteAll); 
    } 
+0

nos puede mostrar parte de su código? –

+0

Yo puedo. Simplemente tomará algunos minutos – khr055

+1

Por cierto, debo mencionar que realmente estoy tratando de eliminar esas bases de datos en el método con el atributo AssemblyCleanup. Esa no soy yo perdiendo la cabeza. – khr055

Respuesta

12

descubierto. Los métodos publicados anteriormente estaban en una clase base de la que heredarían el resto de los casos de prueba, pero la clase base no estaba marcada como TestClass. Aparentemente, sin él todavía puede ejecutar los métodos TestInitialize y TestCleanup, pero no los de Assembly. <

5

AssemblyCleanup es

static public void AssemblyCleanup 

Asegúrese de que esa es su clase es pública y tiene un atributo TestClass

Cuestiones relacionadas