클래스 할당을위한 정렬 알고리즘을 작성했으며 알고리즘이 올바르게 구현되었는지 확인하기위한 몇 가지 테스트도 작성했습니다. 내 테스트는 길이가 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);
}