J'ai quelque chose comme ça:
public byte[] EncodeMyObject(MyObject obj)
J'ai fait des tests unitaires comme celui-ci:
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
EDIT: Les deux façons que j'ai vues proposées sont:
1) Utilisation de valeurs attendues codées en dur, comme dans l'exemple ci-dessus.
2) Utiliser un décodeur pour décoder le tableau d'octets codés et comparer les objets d'entrée / sortie.
Le problème que je vois avec la méthode 1 est qu'elle est très fragile et nécessite beaucoup de valeurs codées en dur.
Le problème avec la méthode 2 est que le test de l'encodeur dépend du bon fonctionnement du décodeur. Si l'encodeur / décodeur sont cassés de manière égale (au même endroit), alors les tests pourraient produire des faux positifs.
Ce sont peut-être bien les seuls moyens de tester ce type de méthode. Si tel est le cas, alors très bien. Je pose la question pour voir s'il existe de meilleures stratégies pour ce type de test. Je ne peux pas révéler les internes de l'encodeur particulier sur lequel je travaille. Je demande en général comment vous pourriez résoudre ce type de problème, et je ne pense pas que les internes soient importants. Supposons qu'un objet d'entrée donné produira toujours le même tableau d'octets de sortie.
myObject
va demyObject
à{ 0x01, 0x02, 0xFF }
? Cet algorithme peut-il être décomposé et testé? La raison pour laquelle je demande est actuellement, il semble que vous ayez un test qui prouve qu'une chose magique produit une autre chose magique. Votre seule confiance est que la seule entrée produit la seule sortie. Si vous pouvez décomposer l'algorithme, vous pouvez gagner davantage en confiance dans l'algorithme et être moins dépendant des entrées et sorties magiques.