Tôi đã viết một số thuật toán sắp xếp cho một bài tập lớp và tôi cũng đã viết một vài bài kiểm tra để đảm bảo các thuật toán được thực hiện chính xác. Các thử nghiệm của tôi chỉ dài như 10 dòng và có 3 trong số chúng nhưng chỉ có 1 dòng thay đổi giữa 3 nên có rất nhiều mã được lặp lại. Có tốt hơn để tái cấu trúc mã này thành một phương thức khác sau đó được gọi từ mỗi thử nghiệm không? Sau đó tôi có cần viết một bài kiểm tra khác để kiểm tra tái cấu trúc không? Một số biến thậm chí có thể được chuyển lên cấp độ lớp. Các lớp và phương thức kiểm thử có nên tuân theo các quy tắc giống như các lớp / phương thức thông thường không?
Đây là một ví dụ:
[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);
}