MsTest - metoda de executare înainte de fiecare test într-un ansamblu

voturi
26

Este posibil pentru a rula metode specifice înainte de fiecare test într-un ansamblu?

Știu despre TestInitializeatribut , dar acest atribut are „domeniu de aplicare de clasă“. Dacă este definit într - o clasă de test va fi executat înainte de fiecare test din această clasă.

Vreau să definească o metodă care va fi executată înainte de fiecare test definit într-un întreg ansamblu de.

Întrebat 12/03/2009 la 15:06
sursa de către utilizator
În alte limbi...                            


5 răspunsuri

voturi
0

Cred că sunteți în căutarea pentru ClassInitializeatribut.

Publicat 12/03/2009 la 15:09
sursa de către utilizator

voturi
1

Ei bine, nu este MSTest instantierea clasei pentru fiecare test? Asta a fost înțelegerea mea de ea. Într-un astfel de caz, indiferent ce apelați de la constructor este codul de inițializare (pe test prin definiție).

EDIT: În cazul în care nu funcționează ( pe care eu încă mai cred că ar trebui , deoarece MSTest trebuie să se asigure că se execută metoda de testare individuale sunt izolate) , atunci TestInitializeeste atributul. Prin modul în care cea mai bună comparație unitară-test este disponibil la link pe CodePlex

Publicat 12/03/2009 la 17:20
sursa de către utilizator

voturi
11

Nu sunt sigur că această caracteristică este posibil în MsTest din cutie ca și în alte cadre de testare (de exemplu, MbUnit).

Dacă trebuie să utilizați MsTest, atunci eu sunt rezolvarea acest lucru prin definirea TestBase clasă abstractă cu [TestInitialize] atribut și fiecare test care are nevoie de acest comportament derivă din această clasă de bază. In cazul tau, fiecare clasă de testare în care ansamblul dumneavoastră trebuie să moștenească de la această bază ...

Și există, probabil, o altă soluție, puteți face atribut test personalizat - dar nu am încercat acest lucru încă ... :)

Publicat 12/03/2009 la 23:10
sursa de către utilizator

voturi
54

[TestInitialize()] este ceea ce ai nevoie.

private string dir;

[TestInitialize()]
public void Startup()
{
    dir = Path.GetTempFileName();
    MakeDirectory(ssDir);
}

[TestCleanup()]
public void Cleanup()
{
    ss = null;
    Directory.SetCurrentDirectory(Path.GetTempPath());

    setAttributesNormal(new DirectoryInfo(ssDir));
    Directory.Delete(ssDir, true);
}


[TestMethod]
public void TestAddFile()
{
    File.WriteAllText(dir + "a", "This is a file");
    ss.AddFile("a");
    ...
}

[TestMethod]
public void TestAddFolder()
{
    ss.CreateFolder("a/");
    ...
}

Aceasta oferă o nouă cale temporară aleatoriu pentru fiecare test, și șterge-o atunci când se face. Puteți verifica acest lucru rulând în depanare și se uită la variabila dir pentru fiecare test.

Publicat 12/03/2009 la 23:15
sursa de către utilizator

voturi
13

Doriți să utilizați [AssemblyInitialize].

A se vedea: MSDN Link

sau această întrebare: pe StackOverflow

Publicat 27/02/2011 la 02:08
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more