У меня есть класс, который проверяет, является ли текущий день недели средой. Это выглядит так:
public class Wednesday
{
public string IsWednesday()
{
if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday)
{
return "It’s Wednesday";
}
else
{
return "It’s not Wednesday";
}
}
}
Не беспокойтесь о типе возвращаемого значения, я знаю, что в данном конкретном примере плохо возвращать магическую строку. Мы сосредоточены на его цели, а не на ее реализации.
Я бы хотел охватить его модульными тестами для обоих случаев, когда текущий будний день - среда, а не среда.
Я новичокна модульное тестирование, и мне интересно, что будет лучшим решением в этом примере.
Сейчас я использую VS2019 с MS Test V2. Я протестировал оба сценария следующим образом:
[TestClass]
public class WednesdayTests
{
[TestMethod]
public void IsWednesday_CurrentWeekDayIsWednesday_ReturnsItsWedndesday()
{
if (!(DateTime.Now.DayOfWeek == DayOfWeek.Wednesday))
{
return;
}
// Arrange
Wednesday wednesdayObj = new Wednesday();
// Act
string result = wednesdayObj.IsWednesday();
// Assert
Assert.AreEqual("It’s Wednesday", result);
}
[TestMethod]
public void IsWednesday_CurrentWeekDayIsNotWednesday_ReturnsItsNotWednesday()
{
if (!(DateTime.Now.DayOfWeek != DayOfWeek.Wednesday))
{
return;
}
Wednesday wednesdayObj = new Wednesday();
string result = wednesdayObj.IsWednesday();
Assert.AreEqual("It’s not Wednesday", result);
}
}
Считается ли нормальным возвращение из метода тестирования, когда какое-то условие не выполняется, как в моем случае?
Или естьчто-то не так с моим решением?
Рад услышать любые предложения от опытных разработчиков программного обеспечения!
PS Просто заметил, что тест будет проводиться только в том случае, если это действительно среда :) Ничего себе, это точноэто не решение!