0

Y a-t-il un avantage à choisir NUnit pour les tests unitaires/d'intégration par rapport à MsTest intégré?Ms Test ou NUnit?

+1

duplication possible de [Existe-t-il de réelles différences entre NUnit et Microsoft Unit Testing Framework (VS 2008)?] (Http: // stackoverflow.com/questions/2422238/are-there-real-différences-entre-nunit-et-microsofts-unit-testing-framework) – JohnFx

+0

Il y a une question similaire [ici] (http://stackoverflow.com/questions/2422238/are -there-real-differences-between-nunit-and-microsofts-unit-testing-framework/2422339 # 2422339), dans lequel j'ai donné un lien vers un post de blog par Roy Osherove, en soulignant les différences. – Paddyslacker

Répondre

2

Ils sont assez similaires. Les différences sont subtiles.

  • NUnit a des cas de test pour les tests paramétrés; MSTest ne le fait pas.

Vous pouvez écrire

[TestCase(1, "one)] 
[TestCase(2, "two)] 
[TestCase(3, "three)] 
[TestCase(4, "four)] 
public void CanTranslate(int number, string expectedTranslation) 
{ 
    var translation = _sut.Translate(number); 

    translation.Should().Be.EqualTo(expectedTranslation); 
} 

plutôt que d'écrire 4 essais ou en utilisant un cycle à l'intérieur du test. Les messages d'erreur des tests échoués seront beaucoup plus clairs et les résultats des tests seront toujours regroupés.

  • NUnit a tendance à être un peu plus complet et flexible. Par exemple, il est livré avec un ensemble cool de attributes comme Combinatorial.

Par exemple

[Test, Combinatorial] 
public void MyTest([Values(1,2,3)] int x, [Values("A","B")] string s) 
{ 
    ... 
} 

qui équivaut à l'exécution des tests

MyTest(1, "A") 
MyTest(1, "B") 
MyTest(2, "A") 
MyTest(2, "B") 
MyTest(3, "A") 
MyTest(3, "B") 

(voir la page originale here)

  • MSTest instancie toujours une nouvelle instance de la classe de test pour chaque méthode de test d être exécuté. Ceci est très utile car, avant chaque test, les méthodes Setup et TearDown seront exécutées et toutes les variables d'instance seront réinitialisées. Avec NUnit, vous devez prendre en charge les variables d'instance éventuellement partagées entre les tests (bien que cela ne devrait pas être un problème de bis: un test bien conçu doit être isolé par la conception)

    • Avec NUnit une des classes abstraites peuvent être un test fixtures et vous pouvez hériter d'autres appareils de test de celui-ci. MsTest n'a pas cette fonctionnalité.
  • MSTest est bien intégré à Visual Studio. Vous auriez besoin d'un plugin tiers pour travailler efficacement avec NUnit, par exemple ReSharper, Test Driven .NET ou NCrunch

  • NUnit a une version couramment Assert, de sorte que vous pouvez écrire

par exemple

Assert.That(result).Is.GreaterThan(9) 

plutôt que

Assert.Greater(9, result); 

Avec SharpTestEx vous pouvez même écrire:

result.Should().Be.GreaterThan(9); 

et tirer parti de la forte IntelliSense typée.