ork*_*kan 6 database android unit-testing robolectric sugarorm
我正在使用Sugar ORM for db和Robolectric进行单元测试.使用Sugar ORM和Robolectric i一起关注这个问题.
我把我的代码放在startEverTestSugarAppAsFirst方法并运行的地方.
new PersonHandler(new Activity()).insertPeople();
Person p = Person.findById(Person.class, 1);
System.out.println(p.getName());
Run Code Online (Sandbox Code Playgroud)
它打印第一条记录的名称.到现在为止还挺好.
但是如果我注释掉//new PersonHandler(new Activity()).insertPeople();并再次运行,则不会返回任何记录并且会给出空指针异常.我认为Sugar ORM在第一次运行时将记录存储到某个地方,我可以在第二次访问这些记录.
另一方面,如果我运行模拟器,我将下面的代码放在我的主要活动的onCreate方法中,在第二次运行中注释掉第一行,我可以看到日志中打印的第一条记录.
new PersonHandler(this).insertPeople();
Person p = Person.findById(Person.class, 1);
Log.v("person", p.getName());
Run Code Online (Sandbox Code Playgroud)
那么,在单元测试结束后,Sugar ORM会删除db吗?或者它保存数据库的位置,所以我可以一遍又一遍地使用它?
它不是SugarORM而是Robolectric。它在每次测试时都会创建临时数据库,因此它们之间不存在隐藏的依赖关系。
这是一件好事,您的单元测试应该成功运行,而不依赖于它们的运行顺序