Ho problemi con alcuni test dell'unità MSTest che passano quando li eseguo individualmente ma esito negativo quando eseguo l'intera classe di test dell'unità. I test provano il codice SLaks helped me with earlier e mi ha avvertito che quello che stavo facendo non era thread-safe. Tuttavia, ora il mio codice è più complicato e non so come fare per renderlo thread-safe. Ecco quello che ho:Il test dell'unità MSTest passa da solo, non riesce quando si eseguono altri test
public static class DLLConfig
{
private static string _domain;
public static string Domain
{
get
{
return _domain = AlwaysReadFromFile
? readCredentialFromFile(DOMAIN_TAG)
: _domain ?? readCredentialFromFile(DOMAIN_TAG);
}
}
}
E il mio test è semplice:
string expected = "the value I know exists in the file";
string actual = DLLConfig.Domain;
Assert.AreEqual(expected, actual);
Quando ho eseguito questo test da solo, esso passa. Quando lo eseguo insieme a tutti gli altri test nella classe di test (che eseguono controlli simili su proprietà diverse), actual
è null
e il test ha esito negativo. Prendo atto che questo non è un problema con una proprietà il cui tipo è un tipo personalizzato Enum
; forse sto avendo questo problema con la proprietà Domain
perché è un string
? O forse è un problema multi-thread con come funziona MSTest?
In che modo (se non lo siete) state creando/abbattendo tra un test e l'altro? – Paddyslacker
@Paddyslacker: nessuno. Non ho metodi '[TestCleanup]' o '[TestInitialize]'. –
I buoni test unitari sono indipendenti, quindi guarderei i veri test unitari aggiungendo alcune impostazioni e teardown per ottenere ogni volta il codice in uno stato noto. Se esiste un vero caso di test per chiamare il metodo contemporaneamente o chiamarlo due volte, quindi scrivere uno specifico caso di test in errore e farlo passare. – Paddyslacker