Несколько уровней setUp / tearDown в TestNG? - PullRequest
1 голос
/ 19 октября 2010

При использовании TestNG для моей платформы Selenium метод setUp является относительно сложным.Есть несколько точек, которые он может разбить, и я хотел бы разбить его на отдельные шаги.

В идеале это будет выглядеть примерно так:preTestCase из-за проблемы с БД и последующего получения вторичного сбоя из-за seleniumTearDown, пытающегося закрыть несуществующий экземпляр.В этой ситуации должен быть запущен только postTestCase.Я получаю эту ошибку: seleniumTearDown () не может зависеть от публичного void seleniumSetUp (org.testng.ITestContext).Разве это не разрешено / плохой дизайн?Как установить порядок выполнения между двумя методами tearDown, чтобы postTestCase () всегда запускался последним, независимо от того, запущен ли seleniumTearDown?

Ответы [ 2 ]

2 голосов
/ 20 октября 2010

Ошибка, которую вы видите, состоит в том, что вы пытаетесь получить зависимость @AfterMethod от @BeforeMethod, что не имеет смысла.У вас могут быть методы конфигурации, зависящие друг от друга, но они должны быть одного и того же типа (например, все @AfterMethod или все @BeforeMethod).

Что касается вашей другой проблемы, то решение, данное Valchris, состоит в том, чтоРекомендую.Если вы знаете, что ваши тесты или конфигурации являются хрупкими, но они не должны прерывать тестовый прогон, поймайте исключение самостоятельно, чтобы TestNG никогда его не увидел.

2 голосов
/ 19 октября 2010

Ваша модель выглядит немного нечетко, установка и отрыв не должны завершиться неудачей.Хотя, возможно, они не могут.Как в;«Попытка установить соединение с БД, была недоступна, поэтому ничего не делалось», затем в разрыве вы должны проверить, является ли это соединение, прежде чем пытаться закрыть его.вы можете использовать какую-то ручную проверку вместо аннотации (будет работать булевский или одноэлементный класс).

In Setup:
if(dbGetConnected()) {
....
} else {
  dbisntconnected = true;
}

In tearDown:
if(!dbisntconnected) {
    dbClose();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...