测试开始和测试结束时的java JUnit指令



在JUnit(或其他)中是否有任何注释可以在测试开始和结束时启动指令?例如:在测试开始时启动SQL会话,并在测试结束时关闭它。@Before和@After -没有选项(()从测试中提取:

public class HibernateTest {
    @Autowired
    SessionFactory sessionfactory;
    @Autowired
    DataSource dataSource;
    Session session;
    Transaction tx;
//  @Transactional(propagation=Propagation.REQUIRES_NEW)
    @Before
    public void setUp() throws MalformedURLException, SQLException, DatabaseUnitException {
        session = sessionfactory.openSession();
        tx = session.beginTransaction();
        String sql_categories = "ALTER SEQUENCE categories_category_id_seq1 RESTART WITH 1";
        String sql_projects = "ALTER SEQUENCE projects_project_id_seq1 RESTART WITH 1";
        String sql_donations = "ALTER SEQUENCE donations_donation_id_seq RESTART WITH 1";
        String sql_clear_donations= "delete from donations *";
        String sql_clear_projects = "delete from projects *";
        String sql_clear_categories= "delete from categories *";
        session.createSQLQuery(sql_categories).executeUpdate();
        session.createSQLQuery(sql_projects).executeUpdate();
        session.createSQLQuery(sql_donations).executeUpdate();
        session.createSQLQuery(sql_clear_donations).executeUpdate();
        session.createSQLQuery(sql_clear_projects).executeUpdate();
        session.createSQLQuery(sql_clear_categories).executeUpdate();
    }
    @After
    public void setDown() throws MalformedURLException, SQLException, DatabaseUnitException {
        session.close();
        tx.commit();
    }
//  @Transactional(propagation=Propagation.REQUIRED)
    @Test
    @ExpectedDatabase(
            value = "classpath:ExpectedAddedCategories.xml",
            assertionMode = DatabaseAssertionMode.NON_STRICT//Не проверять все поля. Только те что надо в xml файле, а не все в базе
            )
    public void testAddCategories() {
        Category cat = new Category("sport");
        Category cat2 = new Category("art");
        Category cat3 = new Category("video");
        session.persist(cat);
        session.persist(cat2);
        session.persist(cat3);
    }
}

这段代码实际上不起作用。Eclipse只是冻结,甚至不结束一个测试(我只展示了一个测试)

如果你想每个类启动一次,你可以使用@BeforeClass和@AfterClass。如果你想要更高级的东西,你也可以看看@ClassRule

最新更新