Escribí algunos algoritmos de clasificación para una tarea de clase y también escribí algunas pruebas para asegurarme de que los algoritmos se implementaron correctamente. Mis pruebas son solo como 10 líneas de largo y hay 3 de ellas, pero solo 1 línea cambia entre las 3, por lo que hay mucho código repetido. ¿Es mejor refactorizar este código en otro método que luego se llama desde cada prueba? ¿No necesitaría escribir otra prueba para probar la refactorización? Algunas de las variables pueden incluso moverse al nivel de la clase. ¿Deben las clases y métodos de prueba seguir las mismas reglas que las clases / métodos normales?
Aquí hay un ejemplo:
[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);
}

givenThereAreProductsSet(amount)e incluso tan simple comoactWith(param). Me las arreglé para hacerlo con una aplicación fluida (pgivenThereAre(2).products(). Ej. ) Una vez, pero me detuve rápidamente porque me pareció una exageración.