![](/img/trans.png)
[英]Why doesn't my @BeforeClass method run when executing a subclass test method?
[英]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。
請注意,這是一個解決方案:如果您的@Before、@Atter 等根本沒有被調用。
確保:
檢查您的進口。
和 @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.