我有这个 jUnit 测试类
public class TestRaavareBatch {
@Before
public void prep(){
try { new Connector(); }
catch (InstantiationException e) { e.printStackTrace(); }
catch (IllegalAccessException e) { e.printStackTrace(); }
catch (ClassNotFoundException e) { e.printStackTrace(); }
catch (SQLException e) { e.printStackTrace(); }
}
MySQLRaavareBatchDAO rvb = new MySQLRaavareBatchDAO();
@Test
public void testgetRaavareBatch() throws DALException{
RaavareBatchDTO rvbOBJ = rvb.getRaavareBatch(7);
assertEquals(7, rvbOBJ.getRaavareId());
assertEquals(100.0, rvbOBJ.getMaengde(),0.0);
assertEquals(7, rvbOBJ.getRbId());
}
@Test
public void testgetRaavareBatchList() throws DALException{
List<RaavareBatchDTO> rvbOBJ = rvb.getRaavareBatchList();
assertEquals(rvbOBJ.size(), 8);
}
@Test
public void testgetRaavareBatchListId() throws DALException{
List<RaavareBatchDTO> rvbOBJ = rvb.getRaavareBatchList(5);
assertEquals(rvbOBJ.size(), 2);
}
@Test
public void testcreateRaavareBatch() throws DALException{
RaavareBatchDTO test;
rvb.createRaavareBatch(test = new RaavareBatchDTO(8, 8, 200.0));
RaavareBatchDTO rvbOBJ = rvb.getRaavareBatch(8);
assertEquals(8, rvbOBJ.getRbId());
assertEquals(200.0, rvbOBJ.getMaengde(),0.0);
assertEquals(8, rvbOBJ.getRbId());
}
@Test
public void testupdateRaavareBatch() throws DALException{
RaavareBatchDTO test;
rvb.updateRaavareBatch(test = new RaavareBatchDTO(8, 7, 100.0));
RaavareBatchDTO rvbOBJ = rvb.getRaavareBatch(8);
assertEquals(7, rvbOBJ.getRaavareId());
assertEquals(100.0, rvbOBJ.getMaengde(),0.0);
}
}
它连接到一个有 7 行的数据库,在我运行最后一个测试“updateRaavareBatch”后,我创建了一个新行,因此列表的大小为 testgetRaavareBatchList()
将是 8。但是它给了我一个错误,因为它在我创建新行之前计算了大小。
我怎样才能运行testgetRaavareBatchList()
在我创建新行并更新它之后。
最佳答案
我曾经在测试数据库中的查询、插入和删除时遇到过类似的情况。
为了确保测试独立性,我以以下基础设施结束:
- 在
@Before
方法中准备数据库连接 - 在
@After
中回滚 - 将一些插入内容放入私有(private)而非
@Test
带注释的实用方法中以避免重复 - 当需要时,
@Test
方法调用实用方法,并通过断言完成其工作
在另一个更困难的情况下,我在 @BeforeClass
方法中创建了一个嵌入式数据库,并在 @AfterClass
中销毁了它
但是您应该永远依赖测试订单。
关于java - 我如何控制 jUnit 测试运行的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30054554/