2015-12-15 72 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

相关问题