2010-01-03 8 views
3

J'ai une classe de test appelée MyClass. MyClass a un TestFixtureSetUp qui charge des données initiales. Je veux marquer la classe entière comme étant Inclusive lorsque le chargement des données initiales échoue. Tout comme lorsque quelqu'un marque une méthode de test Inconclusive en appelant Assert.Inconclusive().Comment marquer une classe entière comme "Inconclusive"?

Y a-t-il une solution?

Répondre

3

Essayez ceci:

  • Dans votre TestFixtureSetUp, stocker une valeur statique dans la classe pour indiquer si les données n'a pas encore chargé, a été chargé avec succès, ou a été tenté, sans succès, mais chargé.

  • Dans votre SetUp pour chaque test, vérifiez la valeur. Si elle indique une charge infructueuse, bombardez immédiatement en appelant le Assert.Inconclusive().

+0

Solution intelligente, merci! –

6

Vous pouvez travailler autour d'elle en utilisant Setup en signalant quand un chargement de données a échoué.

Par exemple:

[TestFixture] 
public class ClassWithDataLoad 
{ 
    private bool loadFailed; 

    [TestFixtureSetUp] 
    public void FixtureSetup() 
    { 
     // Assuming loading failure throws exception. 
     // If not if-else can be used. 
     try 
     { 
      // Try load data 
     } 
     catch (Exception) 
     { 
      loadFailed = true; 
     } 
    } 

    [SetUp] 
    public void Setup() 
    { 
     if (loadFailed) 
     { 
      Assert.Inconclusive(); 
     } 
    } 

    [Test] public void Test1() { }   
    [Test] public void Test2() { } 
} 

Nunit ne supporte pas Assert.Inconclusive() dans le TestFixtureSetUp. Si un appel à Assert.Inconclusive() est effectué, tous les tests du projecteur apparaissent comme ayant échoué.

+0

Merci pour votre solution Elisha. Cela fonctionne aussi bien que John. –

Questions connexes