如何在SQLite上正确运行JUnit测试

时间:2016-11-16 19:36:38

标签: java sqlite unit-testing junit

我有一个具有与SQLite一起运行的不同方法的类。那些包括addremoveupdate等。我试图使用JUnit运行几个测试,问题是它以随机顺序运行测试。因此它会尝试在remove之前测试add方法,这显然总是失败。什么是进行这种测试的好方法?

2 个答案:

答案 0 :(得分:1)

我认为测试不应该依赖于执行顺序。如果我要面对这个问题,我会尝试用准备好的数据库开始每个测试(然后有一个明确定义的状态)。

根据您可以定义的状态,例如断言是每个测试的一部分。例如,如果项目尚未包含,add应增加数据库项的大小。对于remove,如果项目被包含,则尺寸会减小。

您可以使用@Before@After注释。将它们添加到用于准备数据库(表)的方法中。

答案 1 :(得分:1)

在开始构建数据库时的方式与它在生产(例如,flyway)上构建的方式相同。然后使用@Before重置db:截断所有表,重置序列,一切。

然后在每次测试中,使用'给出'阶段准备此测试所需的数据:如果您测试add,可能不需要任何操作,只需添加一个项目,然后再获取它。如果您正在测试唯一索引,请添加两次相同的密钥并断言第二次插入后会出现所需的错误。如果您测试remove,请插入一个项目(您已经测试过add),删除并断言它不在数据库中