Я создал один модуль для разных входов, чтобы убедиться, что выходы правильные.Как написать аналогичные тестовые примеры, не нарушая принцип единой ответственности?
[TestMethod]
public void CountInversionTest()
{
#region Arrange
int[] sourceArray = {4, 3, 2, 1};
int correctInversionCount = 6;
int[] sourceArray2 = { 1, 3, 5, 2, 4, 6};
int correctInversionCount2 = 3;
int[] sourceArray3 = { 5, 6, 2, 3, 1, 4, 7 };
int correctInversionCount3 = 10;
#endregion
#region Act
Sorter sorter = new Sorter();
int inversionCount = sorter.CountInversion(sourceArray);
int inversionCount2 = sorter.CountInversion(sourceArray2);
int inversionCount3 = sorter.CountInversion(sourceArray3);
#endregion
#region Assert
Assert.AreEqual(correctInversionCount, inversionCount);
Assert.AreEqual(correctInversionCount2, inversionCount2);
Assert.AreEqual(correctInversionCount3, inversionCount3);
#endregion
}
Поскольку случаи очень похожи, я помещаю их в один метод испытаний. Это поведение в порядке или это нарушает принцип единой ответственности? Если это сломает SRP, то лучшее решение?
Обычно вы хотите иметь их в отдельных тестах, чтобы было легче узнать, какой тест не прошел. – itsme86
@ itsme86 Должен ли я создать другой TestMethod для каждого случая из них? if so Что должно быть надлежащим соглашением об именах для этих TestMethods? И не будет ли это повторяться? – Baso
Почему вы хотите протестировать 3 случая? Есть ли какой-либо специальный кейс, проверенный одним из них? Если это так, укажите цель в отдельном тестовом файле. –