Я пишу код, который будет выполнять серию тестовых шагов, эти тестовые шаги будут выровнены, чтобы проверить шаги вручную захваченные в тесте, вот пример:аккуратнее способ реализации «количество шагов»
На приведенном выше снимке экрана показаны три шага для образца тестового примера (это просматривается с помощью Microsoft Test Manager).
Просьба также иметь в виду, что это примитивный пример, упрощенный для этого вопроса, на самом деле это не редкость иметь 50 этапов тестирования и значительно более сложные сценарии, также я пропустил код очистки и ввода в приведенной ниже функции ,
Теперь код, который работает это выглядит примерно так: (Обратите внимание на механизм попытка/улова, который позволяет тест на неудачу на определенном этапе):
[TestMethod]
public void LinksPageOpensFromClick()
{
int step = 0;
try
{
step++;
// Code to Open the page
}
catch (Exception ex)
{
Assert.Fail(AppManager.RaiseError(step, "Open the page", ex));
}
try
{
step++;
// Code to Click links button
}
catch (Exception ex)
{
Assert.Fail(AppManager.RaiseError(step, "Click links button", ex));
}
try
{
step++;
// Code to Assert links page opened
}
catch (Exception ex)
{
Assert.Fail(AppManager.RaiseError(step, "Assert links page opened ", ex));
}
}
Первое наблюдение, я использовал чтобы просто жесткий код в значении шага, как это:
Assert.Fail(AppManager.RaiseError(3, "Assert links page opened ", ex));
Но это означает, что в случае изменения тест позже, и тестовые шаги добавлены или заказана, это означает, что изменения вручную огромное количество шагов.
Выполнение шагов в качестве добавочной переменной тоже не идеально, во-первых, это не совсем элегантно, и это слишком подвержено ошибкам, если вы забудете увеличить шаг. Кроме того, вы не можете сканировать код и посмотреть, на каком этапе вы работаете, не добавляя дополнительных комментариев.
То, что я действительно искал это решение так:
[StepDesc="Assert links page opened"]
Step
{
// Code to exec
}
Error (Exception ex)
{
Assert.Fail(AppManager.RaiseError(Step.Count, Step.Desc, ex));
}
В противном случае, уборщик способ увеличения количества шагов или сделать его более динамичным, без необходимости вручную увеличивать его.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Также, если C# не может справиться с этим, возможно, я мог бы поставить все свои передние экзамены в другом проекте, который может быть не C#, но совместим с MSIL?
Это может быть лучший вопрос для обзора кода.что вы могли бы хранить «Словарь» с № шага к тексту ошибки –
DLeh
, вы также можете создавать методы для каждого шага вместо одного гигантского метода. – DLeh
DLeh, приятное предложение, но тогда вам все равно придется бросать эту ошибку с ручным указателем в блоке catch. –