J'ai une classe qui a quelques tests unitaires, mais quand j'exécute des tests je voudrais que la classe soit créée avec un constructeur différent. Quelque chose comme ceci:NUnit s'exécute avec le constructeur alternatif
[TestFixture]
public class MyClass
{
public MyClass() { /* set up for production */ }
[TestFixtureConstructor]
public MyClass() { /* set up for testing */ }
[Test]
public void FirstTest()
{
// assert some values
}
}
Est-ce encore possible?
J'ai envisagé d'utiliser une méthode d'usine statique pour créer la classe en production (avec un constructeur privé) et un constructeur public pour la structure de test.
Est-ce que quelqu'un a d'autres solutions?
100% correct. Pour l'OP - vous ne devriez pas essayer non plus de construire des "test-only" spéciaux. Si vous avez besoin d'un constructeur pour prendre en charge les dépendances, et que la seule chose qui l'utilise est les tests, c'est bien, mais ce constructeur ne devrait pas être caché à tout le monde. Cela rend votre classe plus flexible pour les consommateurs de passer dans les dépendances. – womp
Je suis d'accord. C'est absolument la mauvaise façon de faire cela. Créez une classe distincte et utilisez les attributs Setup et Teardown – lomaxx