ObjectBox数据库ObjectBox入门-4-本地单元测试
HumphreyDanobjectbox
安卓本地单元测试
设置测试环境
| 此配置仅针对 ObjectBox 1.4 及之前版本.新版本已经自动添加了 native ObjectBox 依赖库。
1 2 3 4 5 6 7 8 9
| depdendencies { testImplementation 'junit:unit:4.12' testImplementation "io.objectbox:objectbox-linux:$objectboxVersion" testImplementation "io.objectbox:objectbox-macos:$objectboxVersion" testImplementation "io.objectbox:objectbox-windows:$objectboxVersion" }
|
| 本地单元测试仅支持 64 位系统.
| windows 可能需要安装 Microsoft Visual C++ 2015 Redistributable(x64)
创建本地单元测试类
- 可以使用 BoxStore builder 的
directory(File)
指定数据库保存在本地设备上。
- 为保证数据不交叉污染,可以使用
BoxStore.deleteAllFiles(File)
删除已经存在的数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class NoteTest { private static final File TEST_DIR = new File("objectbox-example/test-db"); private BoxStore store;
@Before public void setUp() throws Exception { BoxStore.deleteAllFiles(TEST_DIR); store = MyObjectBox.builder() .directory(TEST_DIR) .debugFlags(DebugFlags.LOG_QUERIES | DebugFlags.LOG_QUERY_PARAMETERS) .build(); }
@After public void tearDown() throws Exception { if (store != null) { store.close(); store = null } BoxStore.deleteAllFiles(TEST_DIR); }
@Test public void exampleTest() { Box<Note> noteBox = store.boxFor(Note.class); assertEquals(...); } }
|
关系测试
- ObjectBox 1.4.4 及之后
- 为了测试具有 ToOne,ToMany 属性的 entity,必须在本地 JVM 初始化 entity 并且添加一个 transient 的 BoxStore 属性.