JUnit @After方法在第二次测试之前调用

时间:2015-12-15 00:11:55

标签: java junit

我有一个名为TestBase的课程和两个方法setUp()tearDown()。有这些方法的代码:

@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。结果,第二次测试没有开始。怎么了?

1 个答案:

答案 0 :(得分:2)

分别在每个测试之前和之后运行的

@Before@After标记(实例)方法。也许您希望@BeforeClass@AfterClass标记(静态)方法分别仅在开头和结尾处运行一次。