Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Assert Sulle collezioni

Molto spesso nei test si deve verificare se una collezione di entity contiene un oggetto con una proprietà di un dato valore, in questo caso non si può utilizzare il classico Contains della collection ma nunit ci viene in aiuto fornendo alcuni syntax helper interessanti. Considerate una classe chiamata AnEntity con due proprietà di tipo stringa, chiamate rispettivamente PropertyA e PropertyB, ecco un test interessante

[Test]
public void AnotherCollectionTest() {
   
List<AnEntity> al = new List<AnEntity>();
   al.Add(
new AnEntity("A""B"));
   al.Add(
new AnEntity("C""B"));
   al.Add(
new AnEntity("A""B"));
   
Assert.That(al, Has.All.Property("PropertyB""B"));
   
Assert.That(al, Has.Some.Property("PropertyA""C"));
   
Assert.That(al, Has.None.Property("PropertyB""KK"));
}

Come potete vedere ho una lista tipizzata, ci metto dentro tre entità e poi faccio tre test. Il primo verifica che tutti gli oggetti abbiano la proprietà PropertyB pari a B, il secondo controlla che almeno uno abbia la PropertyA pari a C, mentre il terzo verifica infine che nessuno abbia la PropertyB pari a K. Si evincono subito alcune mancanze, non è infatti possibile controllare che un numero esatto di elementi soddisfi il constraint, in particolare manca la verifica che uno ed un solo elemento abbia una proprietà di un valore desiderato. Naturalmente non ci vuole molto a strutturare una interfaccia fluente che permetta di fare:

Assert.That(al, MyHas.One.Property("PropertyA""C"));
Assert.That(al, MyHas.Twice.Property("PropertyA""A"));
Assert.That(al, MyHas.Count(3).Property("PropertyB""B"));

Oppure ci si può spingere anche un po' più in la e fare composizione tramite And e fare un assert di questo tipo

[Test]
public void TestChainWithAnd() {
   
List<AnEntity> al = new List<AnEntity>();
   al.Add(
new AnEntity("A""B"));
   al.Add(
new AnEntity("C""B"));
   al.Add(
new AnEntity("A""w"));
   al.Add(
new AnEntity("q""r"));
   al.Add(
new AnEntity("q""w"));
   
Assert.That(al, MyHas.Twice.Property("PropertyA""q").Property("PropertyB""w"));
}

 

In questo caso sto asserendo che la collezione abbia due elementi con PropertyA pari a "q" e due con PropertyB pari a "w", componendo le asserzioni con And.

Se volete potete scaricare il piccolo esempietto qui, è tutto fatto al volo, ma può essere uno spunto.

Alk.

Technorati Tags:   

Print | posted on lunedì 26 novembre 2007 01:00 | Filed Under [ Testing ]

Feedback

Gravatar

# re: Assert Sulle collezioni

7Zip, lo dovrebbe aprire anche il rar, oppure scarici 7zip che è gratuito e compatta più del rar ;)
Alk.
26/11/2007 18:32 | Gian Maria
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET