Utilizzo di MSTEST in VS2012.3 .NET4.5 e R # per il test runner.Test multipliInizializza attributi in MSTEST
Il codice seguente funziona nell'ordine 1,2,3,4.
Tuttavia mi riguarda che non sempre eseguito in questo ordine come multiplo TestInitialize
attributi non sono supportati MSDN
domanda: E 'questo domestici, e fare i documenti solo dire che più TestInitialize
attributi non sono ammessi in la stessa classe?
Vorrei mantenere questa struttura come molti test di integrazione che ereditano da TransactedTestBase, ma richiedono diversi script SQL da configurare.
Stesso comportamento è stato trovato here
[TestClass]
public class DelegationTest : TransactedTestBase
{
[TestInitialize]
public void Setup()
{
Console.WriteLine("2 Setup");
//var script = "INSERT INTO blah...";
//var sqlConnect = new SqlConnection(dbConnection.ConnectionString);
//sqlConnect.Open();
//var server = new Server(sqlConnect);
//var database = server.Databases[sqlConnect.Database];
//database.ExecuteNonQuery(script);
}
[TestMethod]
public void TestMethod1()
{
Console.WriteLine("3 Test Method");
}
}
[TestClass]
public class TransactedTestBase
{
//protected userEntities userEntities;
//private TransactionScope scope;
//public static SqlDatabase dbConnection;
//private const bool ShouldWriteToDB = true;
//private const bool ShouldWriteToDB = false;
[TestInitialize()]
public virtual void TestStart()
{
Console.WriteLine("1 TestStart");
//if (ShouldWriteToDB)
//{
// dbConnection = EnterpriseLibraryContainer.Current.GetInstance<SqlDatabase>("DBConnect");
// return;
//}
//scope = new TransactionScope(TransactionScopeOption.RequiresNew);
//user = new userEntities();
//dbConnection = EnterpriseLibraryContainer.Current.GetInstance<SqlDatabase>("DBConnect");
}
[TestCleanup()]
public virtual void TestEnd()
{
Console.WriteLine("4 TestEnd");
//if (ShouldWriteToDB) return;
//scope.Dispose();
}
}
È possibile evitare una sorpresa e chiamare direttamente i metodi della classe di base: [TestInitialize] public override vuoto TestStart() { base.TestStart(); Console.WriteLine ("2 Setup"); } – SlavaGu