我有一个 OrmLiteBaseActivity
,在该 Activity 的 onCreate()
中,我从数据库读取了一些数据。根据读取的数据,我更改某些 View 的可见性。
我正在为此 Activity 编写测试。我如何模拟数据库(甚至使用另一个测试数据库),以便我可以根据测试需要更改数据库中的数据,以便我可以根据该数据测试不同的情况。我想根据读取的数据测试 View 的可见性。
欢迎任何想法、指南、示例或其他任何对我有帮助的东西:)
最佳答案
I'm writing tests for this activity. How can I mock the database (or even use another test database) so I can change the data in the database according to my tests needs so I can test different cases depending on that data.
所有数据库内容都通过 4 个接口(interface)在内部驱动到 ORMLite:
-
ConnectionSource
它提供了与数据库的连接 -
DatabaseConnection
代表连接 -
CompiledStatement
它代表已编译的 SQL 语句 -
DatabaseResults
它给出了CompiledStatement.runQuery()
的返回值
当你构造你的 DAO 时,你传入一个 ConnectionSource
实现,它提供 DatabaseConnection
等。你可以使用 EasyMock 或一些小的具体类来模拟这4个接口(interface)。这样做有点复杂,但可以做到。
ORMLite 的单元测试非常广泛。对于一些部分示例,您可以查看:
-
FieldTypeTest.testForeignAutoRefresh()
-- 它显示了ConnectionSource
和DatabaseConnection
的模拟,但没有完全到达DatabaseResults
。 -
TableUtilsTest.testStatement()
-- 它显示了DatabaseConnection
、CompiledStatement
和DatabaseResults
的一些复杂模拟。 -
H2CompiledStatement
and other classes在那个测试包中。这是ORMLite用来测试各种数据库操作的测试代码。 H2++。
关于android - 模拟ormlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21114254/