OBIETTIVO:La proprietà TestContext.TestName cambia MAI
voglio usare la proprietà TestContext.TestName per estrarre il nome del test essere corse in modo che la mia funzione [TestCleanup] può accedere il risultato al nostro su misura repository dei risultati, automaticamente al termine di ogni test.
PROBLEMA:
Anche nella mia base 'sanità mentale controllare' progetto di test che contiene 5 test che sono simili alla struttura di seguito:
[TestMethod]
public void TestMethodX()
{
Console.WriteLine(String.Format("In Test '{0}'",_ctx.TestName));
Assert.IsTrue(true);
}
Con un 'inizializzatore' Classe come di sotto del quale set _ctx per me:
[ClassInitialize]
public static void ClassInit(TestContext Context)
{
_ctx = Context;
Console.WriteLine("In ClassInit()");
}
[[NOTA: i Console.WriteLines sono puramente lì per me a Hove r il mouse sopra e controlla valore/proprietà, ecc.]]
Il _ctx.TestName
non cambia MAI dal nome del primo test nell'esecuzione dei test, cioè Se dovessi eseguire tutti e cinque i test ('TestMethod1', "TestMethod2", "TestMethod3", ecc.) Registrano tutti "TestMethod1" come loro testname nel mio repository dei risultati. Eseguire i test individualmente funziona, ma non serve a me perché devo essere in grado di eseguire 10/100/1000 di test contro la mia applicazione e fare in modo che testContext gestisca me o il nome del test.
Ho provato diverse volte questo problema e ho cercato su Internet e non ho nessun altro con questo problema, quindi sono entrambi: unico con questo problema, ha scarsa conoscenza di Google-Fu, o sto facendo qualcosa Davvero stupido. Spero che questo abbia un senso e qualcuno ha la risposta.
Grazie in anticipo,
Andy
Grazie per questo! ha funzionato perfettamente !! :) – Robbo
Sei il benvenuto. – Schaliasos
Ho avuto un problema simile, quindi ho semplicemente cambiato 'ClassInitialize' in' TestInitialize' prendendo il contesto come parametro. Compila ma il test dice che il metodo 'TestInitialize' sta usando una firma errata (non può accettare un parametro). Perché sulla Terra il 'ClassInitialize' prenderà un contesto se si suppone che sia destinato a testare il metodo e non l'intera classe? Perché il 'TestInitialize' non accetta un contesto? Se 'ClassInitialize' prende un' TestContext' come parametro, come possiamo indovinare che dobbiamo aggiungere una proprietà? Incredibilmente non intuitivo. – fernacolo