Mari kita asumsikan saya menulis metode ekstensi dalam C # untuk byte
array yang mengkodekannya menjadi string hex, sebagai berikut:
public static class Extensions
{
public static string ToHex(this byte[] binary)
{
const string chars = "0123456789abcdef";
var resultBuilder = new StringBuilder();
foreach(var b in binary)
{
resultBuilder.Append(chars[(b >> 4) & 0xf]).Append(chars[b & 0xf]);
}
return resultBuilder.ToString();
}
}
Saya bisa menguji metode di atas menggunakan NUnit sebagai berikut:
[Test]
public void TestToHex_Works()
{
var bytes = new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef };
Assert.AreEqual("0123456789abcdef", bytes.ToHex());
}
Jika saya menggunakan bagian Extensions.ToHex
dalam proyek saya, mari kita asumsikan dalam Foo.Do
metode sebagai berikut:
public class Foo
{
public bool Do(byte[] payload)
{
var data = "ES=" + payload.ToHex() + "ff";
// ...
return data.Length > 5;
}
// ...
}
Maka semua tes Foo.Do
akan tergantung pada keberhasilan TestToHex_Works
.
Menggunakan fungsi bebas di C ++ hasilnya akan sama: tes yang menguji metode yang menggunakan fungsi bebas akan tergantung pada keberhasilan tes fungsi gratis.
Bagaimana saya bisa menangani situasi seperti itu? Bisakah saya menyelesaikan dependensi tes ini? Apakah ada cara yang lebih baik untuk menguji cuplikan kode di atas?
toHex
(atau menukar implementasi). Terlepas dari itu semuanya baik-baik saja. Kode Anda yang dikonversi menjadi hex diuji, sekarang ada kode lain yang menggunakan kode yang diuji sebagai utilitas untuk mencapai tujuannya sendiri.
Then all tests of Foo.Do will depend on the success of TestToHex_works
- Jadi? Anda tidak memiliki kelas yang bergantung pada keberhasilan kelas lain?