Я написал несколько алгоритмов сортировки для назначения класса, а также написал несколько тестов, чтобы убедиться, что алгоритмы были реализованы правильно. Мои тесты состоят всего из 10 строк, и их 3, но только 3 строки меняются, поэтому повторяется много кода. Что лучше сделать этот код в другой метод, который затем вызывается из каждого теста? Не нужно ли мне тогда написать еще один тест для проверки рефакторинга? Некоторые из переменных могут быть даже перемещены на уровень класса. Должны ли классы и методы тестирования следовать тем же правилам, что и обычные классы / методы?
Вот пример:
[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);
}