2010-11-09 16 views
36

In C# come posso testare un'unità più di una condizione?Test unità C#, come testare maggiore di

I.e., il numero di record iIf è maggiore di 5 il test ha avuto esito positivo.

Ogni aiuto è apprezzato

Codice:

int actualcount = target.GetCompanyEmployees().Count 
Assert. ? 

risposta

72
Assert.IsTrue(actualCount > 5, "The actualCount was not greater than five"); 
+0

Ma è meglio mettere un messaggio in modo che si conosce il motivo per cui il test è fallito: Assert.IsTrue (actualCount> 5, "Il numero effettivo non era superiore a cinque"); – McKay

+0

Grazie, ha funzionato – kayak

+4

@ McKay: personalmente trovo che uno sforzo inutile. Se il test fallisce, guarderò comunque il suo codice, quindi non salverebbe molto tempo * anche quando fallisce * e la maggior parte delle asserzioni non falliranno mai dopo il primo IME di check-in. –

6

Il modo giusto per fare questo quando si utilizza NUnit è:

Assert.That(actualcount , Is.GreaterThan(5)); 
+8

'Microsoft.VisualStudio.TestTools.UnitTesting.Assert' non contiene una definizione per 'That'. in VS 2012. –

+0

né GreaterThan, né LessThan, né ... – stannius

+2

Solo buono per nUnit! (ma grazie per il suggerimento T :-)) – ShloEmi

0

actualCount.Should().BeGreaterThan(5);

+1

Sembra buono, questo è il metodo di estensione di? quale spazio dei nomi definire? – ShloEmi

+0

Questo è valido solo per FluentAssertions, ma come @ShloEmi ha detto a NKnusperer, un buon consiglio per chi lo utilizza. – RoLYroLLs

4

A g soluzione enerica che può essere utilizzato con qualsiasi tipo comparabile:

public static T ShouldBeGreaterThan<T>(this T actual, T expected, string message = null) 
    where T: IComparable 
{ 
    Assert.IsTrue(actual.CompareTo(expected) > 0, message); 
    return actual; 
} 
0

in xUnit è:

[Fact] 
    public void ItShouldReturnErrorCountGreaterThanZero() 
    { 
     Assert.True(_model.ErrorCount > 0); 
    }