2015-12-15 97 views
1

我有一個叫TestBase的類和兩個方法setUp()tearDown()。有這些方法代碼:JUnit @After方法在第二次測試之前調用

@Before 
public void setUp() throws Exception { 
    app = ApplicationManager.getInstance(); 
} 

@After 
public void tearDown() throws Exception { 
    app.stop(); 
} 

我也有從TestBase延伸並具有法@Test註釋兩類:

public class SubscriptionTests extends TestBase<Subscription> { 

@Test 
public void testValidSubscription() { 
    DataGenerator.createTestData(Subscription.class); 
    Subscription subscription = (Subscription) getFromXml("subscription", new String[]{"email"}).get(0); 
    app.getModelHelper().createModel(subscription); 
} 
} 

public class UserRegistrationTests extends TestBase<User> { 

@Test 
public void testRegistrationValidUser() { 
    DataGenerator.createTestData(User.class); 
    List<BaseModel> users = getFromXml("user", new String[]{ "email", "name", "password", "passwordConfirmation"}); 
    User validUser = (User) users.get(0); 
    app.getModelHelper().createModel(validUser); 
}} 

我試着開始測試。第一個以成功結束,但之後調用方法tearDown()TestBase類(與@After註釋),我得到SessionNotFoundException。結果第二個測試不開始。怎麼了?

+0

這是什麼異常?也許你應該找到它,並從那裏開始? – pomkine

回答

2

@Before@After標記(實例)方法分別在每個測試之前和之後運行。也許你想@BeforeClass@AfterClass哪些標記(靜態)方法分別只在最開始和結束時運行一次。

+0

同樣的例外 –

+0

您能否提供堆棧跟蹤(在問題中)?你有沒有將你的方法和'app'轉換爲靜態? – dave

相關問題