Je rencontre des problèmes avec certains tests unitaires MSTest qui passent lorsque je les exécute individuellement mais qui échouent lorsque j'exécute toute la classe de test unitaire. Les tests testent du code SLaks helped me with earlier, et il m'a prévenu que ce que je faisais n'était pas sûr pour les threads. Cependant, maintenant mon code est plus compliqué et je ne sais pas comment le rendre thread-safe. Voici ce que j'ai:MSTest passe le test unitaire, échoue lorsque d'autres tests sont exécutés
public static class DLLConfig
{
private static string _domain;
public static string Domain
{
get
{
return _domain = AlwaysReadFromFile
? readCredentialFromFile(DOMAIN_TAG)
: _domain ?? readCredentialFromFile(DOMAIN_TAG);
}
}
}
Et mon test est simple:
string expected = "the value I know exists in the file";
string actual = DLLConfig.Domain;
Assert.AreEqual(expected, actual);
Quand je lance ce test en lui-même, il passe. Lorsque je l'exécute avec tous les autres tests de la classe de test (qui effectuent des vérifications similaires sur différentes propriétés), actual
est null
et le test échoue. Je note que ce n'est pas un problème avec une propriété dont le type est un type personnalisé Enum
; peut-être que j'ai ce problème avec la propriété Domain
parce que c'est un string
? Ou peut-être est-ce un problème multi-thread avec comment fonctionne MSTest?
Comment (le cas échéant) configurez-vous/arrêtez-vous entre les tests? – Paddyslacker
@Paddyslacker: pas du tout. Je n'ai pas de méthodes [TestCleanup] ou [TestInitialize] '. –
Les bons tests unitaires sont indépendants, donc je regarderais faire ces vrais tests unitaires en ajoutant un peu d'installation et de démontage pour obtenir votre code dans un état connu à chaque fois. S'il y a un vrai cas de test pour appeler la méthode simultanément ou l'appeler deux fois, alors écrivez un cas de test spécifique qui échoue pour cela, puis faites le passer. – Paddyslacker