আমি ক্লাস অ্যাসাইনমেন্টের জন্য কিছু বাছাই করা অ্যালগরিদম লিখেছি এবং অ্যালগরিদমগুলি সঠিকভাবে প্রয়োগ করা হয়েছে তা নিশ্চিত করার জন্য আমি কয়েকটি পরীক্ষাও লিখেছি। আমার পরীক্ষাগুলি কেবল 10 লাইন লম্বা এবং এর মধ্যে 3 টি থাকে তবে 3 টির মধ্যে কেবল 1 লাইন পরিবর্তন হয় তাই প্রচুর পুনরাবৃত্তি কোড রয়েছে। এই কোডটি অন্য পরীক্ষার পরে ডেকে আনা অন্য পদ্ধতিতে ভাল করা কি ভাল? রিফ্যাক্টরিং পরীক্ষা করার জন্য আমার কি আর একটি পরীক্ষা লেখার দরকার নেই? কিছু ভেরিয়েবল এমনকি শ্রেণি স্তর পর্যন্ত স্থানান্তরিত করা যেতে পারে। পরীক্ষার ক্লাস এবং পদ্ধতিগুলি কি নিয়মিত ক্লাস / পদ্ধতিগুলির মতো একই নিয়মগুলি অনুসরণ করে?
এখানে একটি উদাহরণ:
[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);
}