7hxr
(7hxr)
#1
Всем привет, я совсем новичек. Стоит задача делать несколько проверок в одном тесте (WebDriver+NUnit), но чтобы тот не падал и ошибки записались.
Ассерты останавливают тест, а Verify нету.
Читал что это можно сделать с помощью мягких ассертов.
Может подскажете как такое реализовать?
polusok
(Mykhailo Poliarush)
#2
реализуется такая штука очень просто
можете создать методы обертки для необходимых ассертов и вызывать их
только в самих методах не делать вызов ошибки, а ловить ошибку и записывать ее где-то в список
а потом в конце теста проверять на наличие ошибок в списке
и если список пустой, значит все проверки прошли нормально
а если есть какие-то ошибки, вы делаете исключение и выводите стек ошибок
dzhariy
(Дмитрий Жарий)
#3
Да, в .NET вы можете использовать лямбда выражения, которые сделают синтаксис теста приятней.
А все остальное – как Миша говорил в предыдущем сообщении.
1. Создайте метод, который принимает лямбда-выражение (делегат). В данном случае, это VerySoft
2. Внутри VerySoft будет выполнен код Ассерта. Но, любой ексепшн будет отловлен
3. Если ексепшн произошел, то VerySoft поставит некоторую глобальную статическую переменную SomeGlobalHasErrors в true и добавит исключение в список.
4. Список исключений можно потом прочитать в TearDown методе после выполнения тестов.
Вот код VerySoft:
public void VerySoft(Action testCode)
{
try
{
testCode();
}
catch (Exception exception)
{
SomeGlobalHasErrors = true;
SomeGlobalListWithExceptions.Add(exception);
}
}
А вот как это можно в тестах использовать:
VerySoft(
() => Assert.IsTrue(false, "Verify that true is false")
);