2011-03-02 35 views
7

Testlerimde kullandığım bir veritabanının başlatılması ve temizlenmesi için kullanılan bazı yöntemlerim var, ancak AssemblyInitialize ve AssemblyCleanup özniteliklerine sahip yöntemlerim çalışmıyor.AssemblyCleanup işten çıkmıyor

Herhangi bir fikrin var mı?

[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

sahiptir? –

+0

Yapabilirim. Sadece birkaç dakika alacaktır – khr055

+1

Btw, ben gerçekten bu veritabanında AssemblyCleanup özniteliği ile yöntemini bırakmaya çalışıyorum. Bu benim aklımı kaybetmemek değil. – khr055

cevap

12

Figured out out. Daha önce yayınlanmış olan bu yöntemler bir temel sınıfta yer almıştı, test vakalarının geri kalanı kalıtsal olarak geçiyordu, ancak temel sınıf bir TestClass olarak işaretlenmemişti. Görünüşe göre, hala TestInitialize ve TestCleanup yöntemlerini çalıştırabilirsiniz, ancak Assembly olanlar>. <

5

AssemblyCleanup

static public void AssemblyCleanup 

onun sınıf kamu thats emin olun ve size bize kod parçasını gösterebilen bir TestClass niteliği

İlgili konular