【发布时间】:2013-04-03 01:06:25
【问题描述】:
想为我的应用程序编写一些测试,我偶然发现了Android testing pages。经过相当长的阅读后,我很快就发现我唯一能从中得到的就是关于如何测试 UI/Activity 的信息。我真正想要的是用简单的ant test 测试我的逻辑的方法,最好甚至不涉及设备。在这个阶段我应该提一下,我没有使用 Eclipse,而且令人遗憾的是,Android 上 99% 的 Java 资源都假设人们会这样做。
无论如何,为了让任何东西都运行起来,我尽可能多地按照教程进行操作。它要求将tests 目录创建在与src 相同的级别上。当然,即使他们的其他页面都暗示测试项目是一个完全独立的实体。在顶级项目目录中,我跑了
android create test-project -m /path/to/my/project/ -n MyProjectTest -p tests。值得一提的是,他们与说出他们希望如何设置事物的方式非常不一致as seen on this question。访问该目录,我发现了默认的测试文件。问题就从这里开始。
据我了解,测试如下:构建应用程序,安装;去测试,构建测试,安装;使用ant test 从测试目录运行测试或使用adb shell am instrument 直接启动它们。这工作得很好。然而,我不想测试活动,而只是测试逻辑(不访问任何视图/活动)。
将默认测试更改为扩展AndroidTestClass 似乎有一段时间了。测试正在运行,但有一些警告:用ant clean 清理tests 还清理了项目目录(../tests),因此在干净的环境中构建测试需要很长时间(这是必要的,因为ant debug 在检测到变化),但它奏效了,我很高兴。
稍后再进行几次测试,我在唯一的测试课上得到了java.lang.VerifyError。谷歌搜索和堆叠,它归结为外部库有问题或我的类路径有问题。我没有使用任何外部.jars,所以这可能是我的路径。
无论如何,这是我的问题: 什么是使用 JUnit 在 Android 应用程序中对逻辑进行单元测试的正确方式™?我根本找不到任何与此相关的资源:所有资源要么用于测试 UI 部分,要么用于对普通应用程序进行单元测试。
我如何仅对我的逻辑进行单元测试?考虑到我不需要使用 Android 的任何部分,这甚至不需要设备运行。我在哪里进行测试?我需要更改什么以便在我的项目目录中运行 ant test 然后运行这些?
【问题讨论】:
标签: android unit-testing junit