Это вопрос новичка FitNesse, так что откройся со мной. Гойко Адзич в своей книге Разработка на основе тестов .NET с FitNesse дает несколько основных советов по сокращению кода теста. Есть метод с именем LogIn
, который на основе имени пользователя и пароля возвращает идентификатор игрока или выдает исключение, когда такого зарегистрированного игрока нет. Вот начальная версия тестового кода:
public class CheckLogIn : fit.ColumnFixture
{
public string username;
public string password;
public int LoggedInAsPlayerId()
{
try
{
SetUpTestEnvironment.playerManager.LogIn(username, password);
return true;
}
catch (Exception)
{
return false;
}
}
}
Затем он заменяется более короткой версией:
public class CheckLogIn : fit.ColumnFixture
{
public string username;
public string password;
public int LoggedInAsPlayerId()
{
return SetUpTestEnvironment.playerManager.LogIn(username, password);
}
}
Теперь ко второму тесту добавлен бонус проверки правильности идентификатора, но он не позволяет проверить, отклоняет ли система неизвестный пользователь / неправильный пароль. Есть ли какое-либо специальное значение, которое можно использовать в столбце для указания исключения? Или мне нужно объединить оба теста, чтобы охватить все сценарии? Я помню, хотя и смутно, в этот самый момент был какой-то шаблон модульного тестирования для обработки исключений, но я уверен, что кто-то уже спрашивал об этом, поэтому я не хочу дублировать. Если сообщество не согласится с этим, пожалуйста, предложите лучшую практику для тестирования таких методов.
На случай, если мне неясно:
Допустим, у меня есть один зарегистрированный игрок: john.doe/test123/101
(имя пользователя / пароль / идентификатор). Две комбинации, с которыми я хотел бы протестировать систему: john.doe/test123/101
и john.doe/johnny/<WrongUserOrPasswordException>