Ho qualcosa di simile a questo:
public byte[] EncodeMyObject(MyObject obj)
Sono stato test unitario in questo modo:
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
EDIT: I due modi in cui ho visto la proposta sono:
1) Utilizzo di valori attesi con hardcoded, come nell'esempio sopra.
2) Utilizzo di un decodificatore per decodificare l'array di byte codificato e confrontare gli oggetti di input / output.
Il problema che vedo con il metodo 1 è che è molto fragile e richiede molti valori hard codificati.
Il problema con il metodo 2 è che il test dell'encoder dipende dal corretto funzionamento del decodificatore. Se l'encoder / decodificatore è rotto in modo uguale (nello stesso punto), i test potrebbero produrre falsi positivi.
Questi potrebbero essere gli unici modi per testare questo tipo di metodo. Se è così, allora va bene. Sto facendo la domanda per vedere se ci sono strategie migliori per questo tipo di test. Non posso rivelare gli interni del particolare codificatore su cui sto lavorando. In generale chiedo come risolvere questo tipo di problema e non ritengo che gli interni siano importanti. Supponiamo che un dato oggetto di input produca sempre lo stesso array di byte di uscita.