每次单元测试时,糖ORM都需要保存记录吗?

时间:2016-03-20 11:57:01

标签: android database unit-testing robolectric sugarorm

我正在使用Sugar ORM for db和Robolectric进行单元测试。要在Robolectric i中使用Sugar ORM,请遵循this问题。

我把我的代码放在 startEverTestSugarAppAsFirst 方法下并运行。

new PersonHandler(new Activity()).insertPeople();
Person p = Person.findById(Person.class, 1);
System.out.println(p.getName());

它打印第一条记录的名称。到目前为止一切都很好。

但是如果我注释掉//new PersonHandler(new Activity()).insertPeople();并再次运行,则不会返回任何记录并且会给出空指针异常。我认为Sugar ORM在第一次运行时存储了记录,我可以在第二次访问这些记录。

另一方面,如果我运行模拟器,我将下面的代码放在我的主要活动的 onCreate 方法中,并在第二次运行中注释掉第一行,我可以看到打印的第一条记录在日志中。

new PersonHandler(this).insertPeople();
Person p = Person.findById(Person.class, 1);
Log.v("person", p.getName());

那么,Sugar ORM会在单元测试结束后删除db吗?或者它保存数据库的位置,所以我可以一遍又一遍地使用它?

1 个答案:

答案 0 :(得分:1)

不是 SugarORM ,而是 Robolectric 。它每次测试都会创建临时数据库,因此它们之间没有隐藏的依赖关系

这是好事,您的单元测试应该成功运行,而不依赖于它们的运行顺序