我有一个具有与SQLite一起运行的不同方法的类。那些包括add
,remove
,update
等。我试图使用JUnit运行几个测试,问题是它以随机顺序运行测试。因此它会尝试在remove
之前测试add
方法,这显然总是失败。什么是进行这种测试的好方法?
答案 0 :(得分:1)
我认为测试不应该依赖于执行顺序。如果我要面对这个问题,我会尝试用准备好的数据库开始每个测试(然后有一个明确定义的状态)。
根据您可以定义的状态,例如断言是每个测试的一部分。例如,如果项目尚未包含,add
应增加数据库项的大小。对于remove
,如果项目被包含,则尺寸会减小。
您可以使用@Before
和@After
注释。将它们添加到用于准备数据库(表)的方法中。
答案 1 :(得分:1)
在开始构建数据库时的方式与它在生产(例如,flyway)上构建的方式相同。然后使用@Before
重置db:截断所有表,重置序列,一切。
然后在每次测试中,使用'给出'阶段准备此测试所需的数据:如果您测试add
,可能不需要任何操作,只需添加一个项目,然后再获取它。如果您正在测试唯一索引,请添加两次相同的密钥并断言第二次插入后会出现所需的错误。如果您测试remove
,请插入一个项目(您已经测试过add
),删除并断言它不在数据库中