2016-11-10 3 views
0

У меня есть небольшая проблема с testNG. Ниже приведен пример кода:TestNG как пропустить тест, когда beforetest терпит неудачу в наследовании

abstract class parent { 

abstract void beforeTest(); 

@Test 
void test() { 
     // some testing 
} 
} 

class child extends parent { 

@BeforeTest 
void beforeTest() { 
     \\some before things 
} 
} 

И вопрос в том, как правильно выполнить этот код? Поэтому я хочу выполнить метод beforeTest(), и если он не прошел тестовый метод shoud skip. Как я могу достичь этой цели?

+0

Разве это не работает, как вы хотите? – talex

+0

Нет, потому что даже если beforeTest не удалось выполнить метод проверки. – user3552976

ответ

0

Обычно методы настройки входят в класс parrent, а тестовые классы должны расширять его. Итак, попробуйте использовать этот пример для ваших тестов:

abstract class TestBase { 
    @BeforeTest 
    public void beforeTest() { 
     // do config here 
     // this will run for each of you <test> tag in your testng.xml suite 
    } 

    @BeforeMethod 
    public void beforeMethod() { 
     // do some config here 
     // this will run for each method annotated with @Test 
    } 
} 

class SomeTestClass extends TestBase { 
    @Test 
    public void some_test() { 
     // some testing 
    } 
} 
+0

Да, теперь, когда это должно быть правильным решением, но спецификация проекта требует, чтобы классы childs реализовывали методы настройки. Вот почему я использую абстрактное ключевое слово перед объявлением BeforeTest в родительском классе. – user3552976

+0

Тогда ваше решение правильное. – Vlad

+0

, вы должны запустить дочерний класс в своем наборе testng. Кроме того, всегда используйте аннотацию @Override при переопределении методов (это очень помогает при рефакторинге кода) – Vlad

Смежные вопросы