2009-10-13 62 views
2

對於我的測試中我使用了一個基類MyTestBase定義一個方法setup(),做一些基本的準備工作:TestNG的,標註「beforeTestMethod」,並覆蓋

public class MyTestBase { 
    @Configuration(beforeTestMethod=true) 
    protected void setup() { 
     // do base preparations 
    } 
} 

現在我有一些更具體的測試類做好自己的準備。如何實現這一點有不同的方法。

我可以使用@Override

public class MySpecialTestBase extends MyTestBase { 
    @Override 
    protected void setup() { 
     super.setup(); 
     // do additional preparations 
    } 
} 

...或者我可以用一個單獨的安裝方法:

public class MySpecialTestBase extends MyTestBase { 
    @Configuration(beforeTestMethod=true) 
    protected void setupSpecial() { 
     // do additional preparations 
    } 
} 

有沒有實現這樣的首選方式?

回答

5

我寧願使用@Configuration註釋。 @Overridesuper更脆弱。您可以忘記撥打super.setup(),或撥打電話錯誤的地方。同時,使用@Configuration的單獨方法可以讓您爲必要時的子設置方法選擇更合適的命名方式,並且您可以通過TestNG(父級和子級)保證設置順序。

兩分:

  1. 我會想辦法讓家長設置final爲了禁止意外壓倒一切的。
  2. 我會使用@BeforeMethod註釋。它們自TestNG 5.0起可用。當然,對於舊版本,您不得不使用@Configuration
+0

感謝您的回答。 – tangens 2009-10-13 16:26:54