2010-12-12 21 views
2

Est-ce que quelqu'un si le code suivant (idée, en fait) est possible en utilisant xunit:C question de test # unité

public class RepositoryTester { 

    private IRepository repository; 

    public RepositoryTester(IRepository repository) { 
     this.repository = repository; 
    ) 

    [Fact] // Analogue of [Test] in other test packages. 
    void CanDoWhatever() { 
     // Test code 
    } 
} 

Maintenant, si je tente de lancer tous les tests unitaires, il échouerait aussi longtemps que xunit tentatives de créer l'objet RepositoryTester en appelant new RepositoryTester() (il appelle le constructeur sans paramètres).

Ce que je veux faire peut exprimer cette façon équivalente:

var tester1 = new RepositoryTester(new SQLRepository(...)); 
var tester2 = new RepositoryTester(new InMemoryRepository(...)); 

tester1. RUN_ALL_TESTS(); 
tester2. RUN_ALL_TESTS(); 

Est-ce que quelqu'un sait si le comportement suivant est possible? (Je souhaite vraiment utiliser le même package de test pour chaque référentiel testable via son interface).

Merci

Répondre

2

Vous pouvez faire RepositoryTester abstraite, et une classe dérivée pour chaque type de référentiel qui crée une IRepository appropriée dans un paramètre moins constructeur. Les méthodes de test héritées seront exécutées pour chaque classe enfant concrète.