2011-12-14 14 views
7

Sto usando NUnit da un po 'ora, e ho ottenuto le mie classi di test dal AssertionHelper. Così facendo, i miei test usano una sintassi simile:C'è un motivo per non usare AssertionHelper con NUnit?

Expect(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

invece di:

Assert.That(myValue, Is.EqualTo(3), "value wasn't equal to 3"); 

Quasi tutti gli esempi con NUnit che vedo utilizza Assert.That() la sintassi, ma sembra che Expect() ha più senso (a almeno per me) poiché mi aspetto un determinato comportamento dal mio codice.

C'è qualche svantaggio nell'usare lo AssertionHelper con NUnit, o è davvero una questione di gusto/stile?

Grazie in anticipo!

risposta

5

Entrambi fanno lo stesso ed entrambi consentono di specificare un vincolo personalizzato che implementa l'interfaccia IConstraint. Dal mio punto di vista Assert() un po 'leggero poiché non obbliga a ereditare tutti i proiettori di prova da una classe speciale.

0

A causa del modo in cui nomino mio variabili, le mie prove si concludono spesso con la linea:

Assert.That(actual, Is.EqualTo(expected)); 

che IMO legge meglio (più fluente) rispetto

Expect(actual, Is.EqualTo(expected)); 
1

Il problema principale con AssertionHelper è Pochissime persone lo usano, quindi le nuove caratteristiche e vincoli NUnit tendono a non esservi aggiunti. Perché è trascurato e non ampiamente utilizzato, il NUnit team is considering removing it o renderlo un pacchetto separato.

Il team sta cercando feedback dalla comunità sull'opportunità o meno di rimuoverlo, quindi sentitevi liberi di commentare il problema.

0

Rob Prouse è corretto che il team di NUnit stia deprecando AssertionHelper. L'ho usato per circa 8 mesi quando ho scoperto che era obsoleto in un aggiornamento e mi sono offerto di mantenerlo. La discussione intorno stava andando molto lentamente ed ero un po 'impaziente, così ho scritto NUnit.StaticExpect che è su Nuget e offre una sostituzione drop-in per AssertionHelper, con un'importazione "using static" nel codice. Ho sostituito un progetto di produzione e funziona bene.

Ho iniziato anche in quel momento su un percorso diverso: NExpect che offre una sintassi più simile a Chai ma con estensibilità più simile a Jasmine. NExpect è in uno stato abbastanza utilizzabile - lo uso da tempo nei miei progetti. C'è un demo project che può essere utilizzato per osservare l'evoluzione delle affermazioni attraverso:.

  1. Assert {} metodo specifico (ad esempio Assert.AreEqual)
  2. Assert.That ({valore o lambda}, {corrente-tensione vincolo})
  3. utilizzo AssertionHelper utilizzo
  4. NUnit.StaticExpect utilizzo
  5. NExpect

oltre a dare un esempio di t lui estensibilità di NExpect. Spero che questo ti aiuti.

Problemi correlati