4

次の出力が期待されていました。

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

しかし、代わりに、これは実際に起こります。2 つの問題に注意してください: BeforeClass はBeforeTest の後に実行されます。次に、Before/AfterTest は once 実行されます。

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、surefire 2.6、testng 5.14.2

4

2 に答える 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");
    }
于 2010-11-26T16:14:40.830 に答える
4

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

于 2010-11-26T18:25:43.040 に答える