Использую связку selenium + java + testng
Для "мягких" проверок реализовал (точнее будет сказать взял реализацию) TestBase (где-то на просторах интеренета, к сожалению не сохранил ссылку).
Суть в следующем: переопределяются все методы assertTrue, false и т.д.
try{
assertTrue(..., message)
} catch (AssertionExcetion ae){
throw ae; //ожидаем что исключение пробросится наверх
}
добавляются методы verifyTrue, false и т.д.
Мягкая проверка делается через (например для verifyTrue
try{
assertTrue(..., message);
} catch (AssertionExcetion ae){
addVerificationFailure(ae); //тут просто собирается скоуп всех экшепненов в тесте и в конце теста распечатывается.
}
Схема остального кода выглядит схематично так:
private void checkFieid1()throws Exception{
try{
...
commonFunc(...);
...
}catch(Exception e)
throw new Exception("Тестирование поля 1 не пройдено\n" + e.getMessage, e)
}
private void checkFieid2()throws Exception{
try{
...
commonFunc(...);
...
}catch(Exception e)
throw new Exception("Тестирование поля 2 не пройдено\n" + e.getMessage, e)
}
private void commonFunc(...)throws Exception{
try{
...
assertTrue(...,message);
...
}catch(Exception e)
throw new Exception("message for common func", e)
}
@Test
public void test1() throws Exception{
try{
checkField1();
checkField2();
...
}catch(Exception e){
throw new Excetion("Test 1 failed \n" + e.getMessage,e);}
Проблема заключается в следующем, при возникновении исключения при assert (строгой проверке) выводится сообщение <expected "true", but was "false">. Данное сообщение вводит в ступор, т.к. не понятно сразу в каком месте упало, да
и стектрейс вылядит так, как будто он дальше по иерархии не пробрасывается..
Из приведенного примера, при первом взгляде на лог, абсолются не понятно в каком месте произошла ошибка, то ли в checkField1, то ли в checkField2. Писать что-то в сообщении к assert'у - тоже не вариант, по той же причине.
Нужно чтобы все выглядело так:
Test 1 failed
Тестирование поля 1 не пройдено
expected "true", but was "false"
...стектрейс...
Собственно все так и срабатывает для других исключений (не найден элемент, превышено время ожидания и т.д.), а с assert'ом не хочет...
Что необходимо сделать, чтобы он пробрасывался куда надо? Т.е. в метод из которого он был вызван (ну и далее по иерархии теста)
Таже проблема с verify,но тут при наличии решения для ассерта, придумать что делать проще :)
...надеюсь понятно описал...


