Używam MSTEST wewnątrz Visual Studio 2008. W jaki sposób mogę mieć każda metoda testu jednostkowego w pewnej klasie testowej działa tak, jakby był pierwszym testem do uruchomienia, tak aby cały stan globalny został zresetowany przed uruchomieniem każdego testu? Nie chcę, aby wyraźnie oczyścić świat z użyciem TestInitialize, ClassInitialize, AssemblyInitialize itd Na przykład:Jak zmusić MSTEST TestMethod do zresetowania wszystkich singletonów/statyki przed uruchomieniem?
[TestClass]
public class MyClassTests
{
[TestMethod]
public void Test1()
{
// The "Instance" property creates a new instance of "SomeSingleton"
// if it hasn't been created before.
var i1 = SomeSingleton.Instance;
...
}
[TestMethod]
public void Test2()
{
// When I select "Test1" and "Test2" to run, I'd like Test2
// to have a new AppDomain feel so that the static variable inside
// of "SomeSingleton" is reset (it was previously set in Test1) on
// the call to ".Instance"
var i2 = SomeSingleton.Instance;
// some code
}
Chociaż similar question pojawiły się na ten temat, to tylko wyjaśnić, że testy nie są uruchamiane równolegle. Rozumiem, że testy są przeprowadzane seryjnie, ale nie ma sposobu, aby wyraźnie wymusić nową AppDomain dla każdej metody (lub coś podobnego do wyczyszczenia wszystkich stanów).
Idealnie, chciałbym określić to zachowanie tylko dla małej części moich testów jednostkowych, aby nie musiałem płacić kary za nowe tworzenie AppDomain dla testów, które nie dbają o stan globalny (zdecydowana większość moich testów).
czy masz przykład kodu Jeff? – DevDave
Tak, przykładowy kod: – Harindaka