Tipo di. Se sono troppo simili, allora sì, è una brutta cosa. Il tuo test non dovrebbe essere codificato allo stesso modo del codice che sta testando. Quindi dovresti definire (1) un'aspettativa e (2) un'implementazione.
Mi piace pensare che sia simile a contabilità a partita doppia . Un sistema di contabilità fa sempre almeno 2 voci (un debito e un credito). Questa è una misura di controllo degli errori. Alla fine della giornata, i debiti e i crediti devono essere bilanciati, oppure c'è stato un errore. Non puoi avere un sistema di rilevamento degli errori senza alcuna forma di ridondanza.
Considerare un CRC per esempio. Il tuo byte CRC è una forma di ridondanza. È sufficiente rilevare qualsiasi piccolo errore nel segnale. Allo stesso modo, i CD audio hanno molte informazioni ridondanti, quindi suonano ancora perfettamente se sono graffiate. Ciò viola il principio ASCIUTTO? Probabilmente, ma è così che ottieni affidabilità.
C'è un altro modo per vederlo anche:
Il tuo test è la risposta autorevole. Il codice che prova è solo auto-generato da te, il codice scimmia. Se potessimo eseguire la generazione automatica del codice in base a test di unità (come se auto-generassimo livelli di accesso ai dati basati su uno schema di database), non violeremmo il principio DRY (o almeno non il principio OAOO).