Bracket Show épisode 25

Unit Testing — Bracket Show, épisode 25

Dans cet épisode nous comparons trois des plus populaires “frameworks” de “unit testing” soit MSTest, NUnit et XUnit. Nous verrons comment ces différent “frameworks” fonctionnent.

Survol des similarités et différences entre MSTest, NUnit et XUnit.

Repository
Évènements
Processus asynchrone
Return true
Règles d’affaires et validation

Tests avec NUnit:

Attributs à utiliser
TestFixture
SetUp
Tests paramétriques
Theory : tester différents scénarios
DatapointSource
Filtrer les données d’entrée pour tester seulement les cas que l’on veut tester
TestCaseSource
Générer des sous-tests avec chacune des valeurs
Indication visuelle de plusieurs tests avec la même méthode

Tests avec MSTest :

Directement intégré à TFS online
Légèrement différent au niveau de la nomenclature
TestClass
TestInitialize
TestMethod
DataRows
Cas limite
Constantes
Test paramétrable : Spécifier une DataSource qui est une référence à un fichier sdf par exemple
Plus complexe à mettre en place

Tests avec XUnit :

Pas d’attributs, simplement une classe de tests
Le constructeur de notre classe agit comme setup
Nouvelle instance de la classe à chaque test
Fact vs Theory
InlineData directement associé au test
La variable statique doit être publique
IEnumerable
Object Array avec tous nos paramètres
Un peu moins clair
Exception ReSharper

Différences de Class Setup :

NUnit
Setup effectué au début de tous les tests de la classe par opposition à un setup exécuté avant chaque test. Pour initialiser quelque chose qui a plus d’envergure et serait long pour le conserver pending pour tous les tests de la même classe.
Nouvelle connexion à une base de données
OneTimeSetup
IDbConnection
MSTest
Class setup doit être statique et recevoir le TestContext
Variable de base de données est statique

XUnit
Setup : reçoit une DatabaseFixture
Repo, au lieu d’initialiser avec une base de données, va chercher DbConnection
Implémenter l’interface IClassFixture en y passant une classe
Constructeur vide

Tester des exceptions

NUnit
Fluent Assertions VS Assertions de base

MSTest
La méthode du test est async
ThrowsExceptionAsync
DoesNotThrow
XUnit
Test concis
Pas de code DoesNotThrow

Tester les events :

Variable booléenne
Assert.isTrue
Vérifier que l’événement a bien été lancé
Contexte .NET Core
RaisesAsync
EventHandler

Conclusion

Leave a Reply

Your email address will not be published. Required fields are marked *