2014-01-24 4 views
0

Я использую TestNG 6.5.1.TestNG запускает зависимые методы каждый раз

Итак, у меня есть методы тестирования B и C, которые зависят от метода тестирования A. Есть ли способ запустить метод A перед запуском метода B, а также снова перед запуском метода C?

Я знаю, что очевидным способом было бы просто вызвать метод, но я не хочу этого, потому что, если метод A не работает, я не хочу, чтобы метод C также терпел неудачу, но его пропускали. Если у вас есть только эти три метода, было бы глупо просить по-другому, но когда у вас есть очень сложное дерево зависимостей, чем все изменения ...

ответ

0

Используйте аннотацию «dependOnMethods» для метода тестирования.

Пример: -

@Test(dependsOnMethods="method2") 
public void method1(){ 
} 

См этот answer и изменить beforeInvocation(), как показано ниже,

public void beforeInvocation(IInvokedMethod method, ITestResult itr) { 
if (method.isTestMethod()) { 
    //call any method 
} 

}

+0

Да, я знаю, очевидно, об аннотации dependOnMethods, но это не работает, как я хочу ... Используя метод dependOnMethod, метод A, зависящий от B и C, запускается только один раз, а не перед запуском любого другого метода. .. – spauny

+0

см. Мой обновленный ответ. – Akbar

+0

Я решил это, внедрив Testng MethodInterceptor. Благодаря! – spauny

0

Не могли бы вы изменить способ А из @Test к методу @BeforeMethod? Затем он будет работать до B и C, и они будут пропущены, если он не сработает.

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