So, i'm new to unit testing, and even more so to test first development. Is it valid for me to have just a single assert.isTrue statement in my unit test where I pass in my method and a valid parameter, and compare it to the known good answer?
Method
public static string RemoveDash(string myNumber)
{
string cleanNumber = myNumber.Replace("-","");
return cleanNumber;
}
Test
[TestMethod()]
public void TestRemoveDash()
{
Assert.IsTrue(RemoveDash("50-00-0")=="50000");
}
Это довольно верно, если он проверяет функциональность вашего метода, что, по всей видимости, он и делает.
Можно вместо этого использовать Equals, но это не имеет особого значения. Кроме того, я знаю, что это тестовый пример, но всегда проверяйте тестовые случаи, когда ввод не соответствует ожидаемому, а также любые другие допустимые формы, в которых он может входить (это может быть тот же метод тестирования или другой, в зависимости от на ваш выбор)
Тестировщики иногда читают наши тесты, поэтому я стараюсь сделать их как можно более читаемыми. Я бы предпочел использовать следующее, а не одно утверждение:
[TestMethod()]
public void TestRemoveDash()
{
string expected = "50000";
string actual = RemoveDash("50-00-0");
Assert.AreEqual(expected,actual);
}
Единственный комментарий - использовать Assert.AreEqual
вместо Assert.IsTrue
:
Assert.IsAreEqual("50000", RemoveDash("50-00-0"));
Причина в том, что если тест не прошел, вы получите сообщение об ошибке описание того, что должно было случиться и что произошло на самом деле. Сообщение «Ожидаемое значение <50000>, но на самом деле было <50-00-0>» намного лучше, чем «Ожидаемое значение было истинным, но было ложным».
Как правило, всякий раз, когда вы находите вы хотите использовать Assert.IsTrue
, просмотрите методы Assert
и посмотрите, есть ли лучший метод для проверки ваших ожиданий (например, Assert.IsInstanceOfType
, ] Assert.IsNotNull
и т. Д.).
Это кажется совершенно верным - однако почему бы не включить в этот метод еще несколько тестов, аналогичных тем, но тестирование, например, RemoveDash ("-") == ""
и RemoveDash ("- 5") == "5"
и т. Д.?