2014-01-24 70 views
0

我正在使用TestNG 6.5.1。TestNG每次運行依賴的方法

所以我有測試方法B和C取決於測試方法A.有沒有辦法在運行方法B之前運行方法A,還有在運行方法C之前運行方法A?

我知道明顯的方法是隻調用方法,但我不想這樣做,因爲如果方法A失敗,我不希望方法C也失敗,但要跳過。如果您只有這三種方法,那麼要求另一種方式似乎很愚蠢,但是當您擁有比一切更改更復雜的依賴關係樹時......

回答

0

在測試方法上使用「dependsOnMethods」註釋。

樣品: -

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

請參閱本answer並更改beforeInvocation()如下,

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

}

+0

是的,我明顯知道dependsOnMethods註解,但不能像我想要的那樣工作......通過使用dependsOnMethod,由B和C所依賴的方法A只運行一次,而不是在運行其他任何方法之前運行。 .. – spauny

+0

看到我更新的答案。 – Akbar

+0

我通過實施Testng MethodInterceptor解決了這個問題。謝謝! – spauny

0

你能不能從@Test改變方法的到@BeforeMethod?然後它會在B和C之前運行,如果失敗,它們將被跳過。