Saya menulis beberapa algoritma penyortiran untuk tugas kelas dan saya juga menulis beberapa tes untuk memastikan algoritma diimplementasikan dengan benar. Tes saya hanya seperti 10 baris panjang dan ada 3 dari mereka tetapi hanya 1 perubahan baris antara 3 sehingga ada banyak kode yang diulang. Apakah lebih baik untuk memperbaiki kode ini menjadi metode lain yang kemudian dipanggil dari setiap tes? Tidakkah saya kemudian perlu menulis tes lain untuk menguji refactoring? Beberapa variabel bahkan dapat dipindahkan ke level kelas. Haruskah pengujian kelas dan metode mengikuti aturan yang sama dengan kelas / metode biasa?
Ini sebuah contoh:
[TestMethod]
public void MergeSortAssertArrayIsSorted()
{
int[] a = new int[1000];
Random rand = new Random(DateTime.Now.Millisecond);
for(int i = 0; i < a.Length; i++)
{
a[i] = rand.Next(Int16.MaxValue);
}
int[] b = new int[1000];
a.CopyTo(b, 0);
List<int> temp = b.ToList();
temp.Sort();
b = temp.ToArray();
MergeSort merge = new MergeSort();
merge.mergeSort(a, 0, a.Length - 1);
CollectionAssert.AreEqual(a, b);
}
[TestMethod]
public void InsertionSortAssertArrayIsSorted()
{
int[] a = new int[1000];
Random rand = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < a.Length; i++)
{
a[i] = rand.Next(Int16.MaxValue);
}
int[] b = new int[1000];
a.CopyTo(b, 0);
List<int> temp = b.ToList();
temp.Sort();
b = temp.ToArray();
InsertionSort merge = new InsertionSort();
merge.insertionSort(a);
CollectionAssert.AreEqual(a, b);
}