簡體   English   中英

為什么我的@BeforeClass 方法沒有運行?

[英]Why isn't my @BeforeClass method running?

我有以下代碼:

    @BeforeClass
    public static void setUpOnce() throws InterruptedException {
        fail("LOL");
    }

以及@Before、@After、@Test 或@AfterClass 方法等各種其他方法。

測試不會像它應該的那樣在啟動時失敗。 有人能幫助我嗎?

我有 JUnit 4.5

該方法在立即調用 setUp() 時失敗,注釋為 @before。 類 def 是:

public class myTests extends TestCase {

不要擴展 TestCase 並同時使用注釋!
如果您需要創建帶有注釋的測試套件,請使用 RunWith 注釋,例如:

@RunWith(Suite.class)
@Suite.SuiteClasses({ MyTests.class, OtherTest.class })
public class AllTests {
    // empty
}


public class MyTests {  // no extends here
    @BeforeClass
    public static void setUpOnce() throws InterruptedException {
        ...
    @Test
    ...

(按照慣例:類名用大寫字母)

該方法 必須是靜態的,不能直接調用失敗(否則其他方法將不會被執行)。

以下類顯示了所有標准 JUnit 4 方法類型:

public class Sample {

    @BeforeClass
    public static void beforeClass() {
        System.out.println("@BeforeClass");
    }

    @Before
    public void before() {
        System.out.println("@Before");
    }

    @Test
    public void test() {
        System.out.println("@Test");
    }

    @After
    public void after() {
        System.out.println("@After");
    }

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

}

輸出是(不足為奇):

@BeforeClass
@Before
@Test
@After
@AfterClass

確保從正確的包中導入了 @Test。

  • 正確的包:org.junit.Test
  • 不正確的包:org.junit.jupiter.api.Test

請注意,這是一個解決方案:如果您的@Before、@Atter 等根本沒有被調用。

確保:

  • 您的測試類不繼承自 TestCase
  • @BeforeClass 方法是靜態的
  • 測試類層次結構中的@BeforeClass 方法不會超過一個(只會執行最專業的@BeforeClass 方法)

檢查您的進口。

  • @前
  • @后
  • @BeforeClass(這應該是靜態的)
  • @AfterClass(這應該是靜態的)

和 @Test 注釋應該從相同的路徑導入。

為了運行之前注釋的函數,我必須執行以下操作:如果您使用 Maven,請向 Junit 4.11+ 添加依賴項:

      <properties>
              <version.java>1.7</version.java>
              <version.log4j>1.2.13</version.log4j>
              <version.mockito>1.9.0</version.mockito>
              <version.power-mockito>1.4.12</version.power-mockito>
               <version.junit>4.11</version.junit>   
              <version.power-mockito>1.4.12</version.power-mockito>
      </properties>           

和依賴:

      <dependencies>
        <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>${version.junit}</version>
         <scope>test</scope>
       </dependency>    
        .
        .
        .
      </dependencies>

確保您的 Junit 測試類沒有擴展 TestCase 類,因為這會導致與舊版本重疊:

public class TuxedoExceptionMapperTest{
   protected TuxedoExceptionMapper subject;

   @Before
   public void before() throws Exception {
     subject = TuxedoExceptionMapper.getInstance();
      System.out.println("Start");
      MockitoAnnotations.initMocks(this);
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM