Единичные / интеграционные тесты, насколько гранулированными они должны быть? - PullRequest
4 голосов
/ 17 декабря 2008

Я тестирую пользовательский интерфейс моего приложения ASP.Net Web Forms, используя NUnit / Watin. Я понимаю концепции высокого уровня, связанные с TDD, модульным тестированием, интеграционным тестированием и т. Д., Но до сих пор у меня не было возможности использовать их.

Итак, когда я тестирую логику проверки в форме ввода данных, должен ли я написать один тест, который вызывает каждую из моих ошибок проверки (т. Е. Поле x требуется), или отдельный тест для каждой из ошибок проверки, должен быть брошен по форме. Это просто проблема стиля или есть веские причины для написания нескольких тестов вместо одного, который затрагивает все возможные комбинации моей логики валидации?

Код Psuedo:

    [Test]
    public void Validation()
    {
       //Do some stuff to test that username is required.
       Assert.AreEqual(true, ie.ContainsText("Username is required.");

       //Do some stuff to test that passwword is required.
       Assert.AreEqual(true, ie.ContainsText("Password is required.");
    }

против

[Test]
public void ValidateUserName()
{
   //Do some stuff to test that username is required.
   Assert.AreEqual(true, ie.ContainsText("Username is required.");
}

[Test]
public void ValidatePassword()
{
   //Do some stuff to test that passwword is required.
   Assert.AreEqual(true, ie.ContainsText("Password is required.");
}

1 Ответ

7 голосов
/ 17 декабря 2008

Я бы склонялся к одному тесту на проверку:

  • Если вы полностью нарушите проверку, два теста пройдут неудачно, поэтому вы сразу узнаете обо всем, что сломали. Если они находятся в одном и том же тесте, то первый сбой будет маскировать второй, пока первый не будет исправлен.

  • Как только вы что-то сломаете, вы получите описание того, что именно сломано в именах неудачных методов. Многие GUI модульного тестирования будут давать вам маленький красный светофор рядом с каждым неудачным тестом, и они, естественно, будут выделять и описывать все ваши ошибки.

Сказав это, важно то, что вы тестируете вообще - где конкретные тесты появляются в классе, это второстепенная деталь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...