Ho effettuato alcuni test e utilizzando un campo statico nella classe per "indicare" il metodo TestCleanup che tutti i metodi sono stati eseguiti sembra funzionare. È quindi possibile eliminare la ClassCleanup e fare qualcosa del genere:
private static int runs = 0;
[ClassInitialize]
public static void SetUpBrowser(TestContext context)
{
pageObjectBase.SetBrowser("chrome");
pagesManager.GetPageObjectBase();
}
[TestMethod]
public void FindCriticalBug()
{
runs++;
bla-bla-bla();
}
[TestMethod]
public void FindCriticalBug2()
{
runs++;
ble-ble-ble();
}
[TestCleanup]
public static void CloseBrowser()
{
if (runs == 2)
{
pageObjectBase.Stop();
pagesManager.GeneralClearing();
}
}
mi piacerebbe rimanere molto lontani da questa soluzione, però, ma se non avete altra alternativa, e non si può refactoring il vostro disegno per utilizzare il ciclo di vita fornito, potrebbe essere un'opzione. Probabilmente potresti diventare più fanatico qui e scrivere la tua classe base che conta le esecuzioni e ottiene la quantità totale di metodi di test usando il reflection per automatizzare questa roba.
Grazie per l'idea dell'ordine di prova! Nel mio caso ho bisogno solo di riavviare il browser dopo ogni classe con gli autotest, non c'è dipendenza nell'ordine di test. – Ellina