Sembra che la maggior parte dei quadri primi usati prevede prima attuale (per qualche motivo sconosciuto, però, lancio dei dadi forse?). Tuttavia, con lo sviluppo dei linguaggi di programmazione e con l'aumento della fluidità , l'ordine è stato annullato. Le interfacce più fluenti di solito cercano di imitare il linguaggio naturale e le strutture di test delle unità non sono diverse.
Nell'asserzione, vogliamo assicurare che alcuni oggetti soddisfano alcune condizioni. Questa è la forma del linguaggio naturale, come se si dovesse spiegare il tuo codice di prova si sarebbe probabilmente dire
"In questo test, mi assicuro che il valore calcolato è pari a 5"
invece di
"In questo test, mi assicuro che 5 sia uguale al valore calcolato".
La differenza potrebbe non essere enorme, ma spingiamola ulteriormente. Considera questo:
Assert.That(Roses, Are(Red));
Suoni di destra. Now:
Assert.That(Red, Are(Roses));
Hm ..? Probabilmente non saresti troppo sorpreso se qualcuno ti dicesse che le rose sono rosse. Altrimenti, rosso sono rose, solleva domande sospette. Yoda, qualcuno?
Yoda di fare un punto importante - invertì l'ordine ti costringe a think.
diventa ancora più innaturale quando le tue affermazioni sono più complesse:
Assert.That(Forest, Has.MoreThan(15, Trees));
Come ti invertire quello? Più di 15 alberi sono stati trovati dalla foresta?
Questa affermazione (scioltezza come fattore trainante per la modifica) sia in qualche modo riflette nel cambiamento che NUnit ha attraversato - in origine (Assert.AreEqual
) ha usato previsto prima attuale (vecchio stile). Estensioni fluide (o per utilizzare la terminologia NUnit, basata sul vincolo - Assert.That
) hanno invertito questo ordine.
Hai guardato i messaggi di errore predefiniti che vengono generati quando un test fallisce? Ecco perchè. O stai chiedendo perché i messaggi sono scritti in quel modo? Stai chiedendo dello "standard" C che si preoccupa di 'if (23 = a)' vs. 'if (a = 23)'? E 'questo quello che stai chiedendo? –
Forse solo per comodità, l'espressione di asserzione può essere relativamente complessa, quindi mettere i risultati attesi per prima cosa rende più facile la ricerca. –
@ S.Lott: so perché ho bisogno di passarli in questo ordine, voglio sapere perché la maggior parte delle interfacce di test di unità sono scritte in questo modo. –