2010-11-26 9 views
4

私は次の出力が期待される:Mavenの+シュア+ TestNGの順序 - BeforeClass、BeforeTest、テスト、テスト、AfterTest、AfterClass

Running TestSuite 
[DEBUG] beforeClass 
[DEBUG] beforeTest 
[DEBUG] test 
[DEBUG] afterTest 
[DEBUG] beforeTest 
[DEBUG] test 
[DEBUG] afterTest 
[DEBUG] afterClass 

しかし、代わりに、これは実際に起こります。 Notice 2の問題:BeforeClassがを実行した後に BeforeTest。第二に、Before/AfterTestはを一度実行します。

Running TestSuite 
[DEBUG] beforeTest 
[DEBUG] beforeClass 
[DEBUG] test 
[DEBUG] test 
[DEBUG] afterClass 
[DEBUG] afterTest 

ここにコードがあります。ツールのバージョンについて興味が誰のための

import org.testng.annotations.AfterClass; 
import org.testng.annotations.AfterTest; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 
public class TestNgAnnoTest { 
    @BeforeClass 
    public void beforeClass(){ 
     System.out.println("beforeClass"); 
    } 
    @BeforeTest 
    public void beforeTest(){ 
     System.out.println("beforeTest"); 
    } 
    @Test 
    public void test1(){ 
     System.out.println("test"); 
    } 
    @Test 
    public void test2(){ 
     System.out.println("test"); 
    } 
    @AfterTest 
    public void afterTest(){ 
     System.out.println("afterTest"); 

    } 
    @AfterClass 
    public void afterClass(){ 
     System.out.println("afterClass"); 
    } 
} 

: JavaのMacOSXの/ 1.6.0_22、MVN:2.2.1、確実な2.6、TestNGの5.14.2

答えて

5

私に愚かな。 After/BeforeTestとAfter/BeforeMethodを混同します。

[DEBUG] beforeClass 
[DEBUG] beforeMethod 
[DEBUG] test 
[DEBUG] afterMethod 
[DEBUG] beforeMethod 
[DEBUG] test 
[DEBUG] afterMethod 
[DEBUG] afterClass 

After/BeforeTestを置き換えると、正しい実行順序が生成されました。

@BeforeClass 
    public static void beforeClass(){ 
     log.debug("beforeClass"); 
    } 

    @BeforeMethod 
    public void beforeMethod(){ 
     log.debug("beforeMethod"); 
    } 

    @Test 
    public void test1(){ 
     log.debug("test"); 
    } 

    @Test 
    public void test2(){ 
     log.debug("test"); 
    } 

    @AfterMethod 
    public void afterMethod(){ 
     log.debug("afterMethod"); 

    } 

    @AfterClass 
    public void afterClass(){ 
     log.debug("afterClass"); 
    } 
+0

私たちは2人になります! – jpaugh

3

正しい。 @ BeforeTest/@ AfterTestはテストメソッドではなくタグをラップします。

関連する問題