测试使用ContentResolver的Activity

时间:2014-03-07 18:25:40

标签: android unit-testing testing

在我的应用程序中,我有一个Activity,它基本上是一个表单,供用户输入数据,然后通过ContentResolver插入到数据库表中。我该如何测试此活动?

我的第一次尝试是使用ActivityInstrumentationTestCase2,它为我提供了完整的工具来模拟输入数据。但是,在每次测试之间,基础ContentProvider没有被关闭和销毁,这使得数据库在后续测试开始时处于未知状态。

我的第二次尝试是使用ActivityUnitTestCase并注入一个模拟上下文,可以为每个测试清理数据库。但是,这不允许我输入文本或单击活动中的按钮,因为它实际上从未在测试设备上绘制。

有没有人对我还能尝试什么有任何建议?

1 个答案:

答案 0 :(得分:0)

似乎您一直在使用的是用于库开发

你应该看看猴子二进制here,这对我很有用。

如果您对此不满意,可以使用monkeyRunner来控制您正在运行的测试。

编辑: 就数据库测试而言,你不能在每次测试后使用sqlite3二进制文件进行简单的查询吗?

EDIT2: 我正在考虑执行以下操作的.sh脚本:

  1. 运行猴子一段时间 - 您可以指定要发送的猴子的事件数量
  2. 使用查询来调用sqlite3,该查询将数据库完整性检查到日志文件中(sqlite3命令可以将sql查询作为第二个参数,并且可以使用“>”将输出写入某个文件)
  3. 重复。
  4. 网上有大量的.sh脚本示例,所以你不应该有这个问题。

    我假设您在adb shell中执行了所有操作,但如果您不这样做,请确保正确设置所有环境变量。特别是ANDROID_ROOT,ANDROID_ASSETS和ANDROID_DATA应相应地设置为“/ system”,“/ system / app”和“/ data”。另外不要忘记“chmod”.sh文件是可执行的(chmod 777 file.sh)。

    另一个建议是生成并跟踪猴子随机种子,以便您可以重复导致问题的某些输入。您可以使用-s参数指定种子。