Böyle bir şey var:
public byte[] EncodeMyObject(MyObject obj)
Bu şekilde birim test yaptım:
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
DÜZENLEME: Önerilen gördüğüm iki yol:
1) Yukarıdaki örnek gibi sabit kodlanmış beklenen değerleri kullanma.
2) Kodlanmış bayt dizisinin kodunu çözmek için bir dekoder kullanmak ve giriş / çıkış nesnelerini karşılaştırmak.
Yöntem 1 ile gördüğüm sorun çok kırılgan ve çok sayıda sabit kodlanmış değer gerektiriyor olmasıdır.
Yöntem 2'deki sorun, kodlayıcıyı test etmenin kod çözücünün doğru çalışmasına bağlı olmasıdır. Kodlayıcı / kod çözücü eşit olarak kırılırsa (aynı yerde), testler yanlış pozitifler üretebilir.
Bu tür bir yöntemi test etmenin tek yolu bunlar olabilir. Eğer durum buysa, o zaman iyi. Bu tür testler için daha iyi stratejiler olup olmadığını görmek için soruyu soruyorum . Üzerinde çalıştığım belirli kodlayıcının iç kısımlarını açığa çıkaramıyorum. Genel olarak bu tür bir problemi nasıl çözeceğinizi soruyorum ve içselliğin önemli olduğunu düşünmüyorum. Belirli bir giriş nesnesinin her zaman aynı çıkış bayt dizisini üreteceğini varsayın.
myObject
gitmekmyObject
için{ 0x01, 0x02, 0xFF }
? Bu algoritma parçalanıp test edilebilir mi? Sormamın nedeni şu anda, sihirli bir şeyin başka bir sihirli şey ürettiğini kanıtlayan bir testiniz var gibi görünüyor. Tek güveniniz, bir girdinin bir çıktıyı üretmesidir. Algoritmayı parçalayabilirseniz, algoritmaya daha fazla güvenebilir ve büyülü giriş ve çıkışlara daha az güvenebilirsiniz.