2011-08-08 46 views
1

我正在使用JUnit 4(junit-4.8.2.jar)在我的Java項目上運行測試,並在使用assumeTrue時遇到問題。我有這樣的基本設置:在JUnit4中假設True錯誤而不是忽略測試

public class ClientTest extends TestCase { 

    @BeforeClass 
    public void setUp() { 
     assumeTrue(isPaidAccount()); 
    } 

    @Test 
    public void testTheThings() { 
     // run this test if the user has a paid account 
    } 
} 

的方法isPaidAccount()就要回來了假,這是預期的,但不是在類中的測試被忽略,他們都回來爲錯誤。 Eclipse中使用JUnit4測試運行器以及maven都會發生這種情況。我也曾嘗試移動assumeTrue成@Before方法,像這樣:

public class ClientTest extends TestCase { 

    @BeforeClass 
    public void setUp() { 
     // set up 
    } 

    @Before 
    public void mustHavePaidAccount() { 
     assumeTrue(isPaidAccount()); 
    } 

    @Test 
    public void testTheThings() { 
     // run this test if the user has a paid account 
    } 
} 

然而,當我這樣做它完全忽略了@Before方法,只是運行測試反正。同樣,我在Eclipse Test Runner和Maven中都得到了相同的行爲。我確信我正在做一些明顯不正確的事情,但我不確定它是什麼。

回答

7

擴展TestCase用於JUnit 3.x,使用註釋是JUnit 4.x.如果你放棄extends TestCase它應該工作。

+0

是的!奇蹟般有效。 –