
在任何情况下,尝试运行任何东西,我尽可能多地和教程一起玩.它要求测试目录与src在同一级别上.当然,即使他们的每一页都暗示测试项目是一个完全独立的实体.在顶级项目目录中,我跑了
androID create test-project -m / path / to / my / project / -n MyProjectTest -p tests.值得一提的是,他们非常不同意他们想要如何设置事项as seen on this question.访问目录时,我发现了默认的测试文件.这是问题的开始.
据我了解,测试完成如下:构建应用程序,安装;去测试,构建测试,安装;使用ant test从tests目录运行测试,或者使用adb shell am instrument直接启动它们.这很好.但是我不想测试活动,只想测试逻辑(不访问任何视图/活动).
更改默认测试以扩展AndroIDTestClass似乎已经有一段时间了.测试正在运行,但有一些警告:使用ant clean清理测试也清理了项目目录(../tests),因此在干净的环境中构建测试需要花费很长时间(这是必要的,因为蚂蚁调试在检测更改时看起来很糟糕)但它很有效,我很高兴.
之后几乎没有测试,我在我唯一的测试类上得到了java.lang.VerifyError.谷歌搜索和堆叠,它归结为外部库的错误或类路径错误.我没有使用任何外部.jars所以它可能是我的道路.
无论如何,这是我的问题:
使用JUnit在AndroID应用程序中单元测试逻辑的Proper Way™是什么?我根本无法找到任何资源:所有资源都用于测试UI部件或用于测试普通应用程序的单元.
我怎样才能单独测试我的逻辑?这甚至不需要设备运行,因为我不需要使用AndroID的任何部分.我在哪里进行测试?我需要更改什么,以便在我的项目目录中运行ant测试然后运行那些?
解决方法 很久以后我就成功了.首先,我忽略了使用adb创建任何项目.
想象一下,我的包名为com.foo.bar.我在src / com / foo / bar / tests中创建了测试.在那里,编写常规的JUnit测试.确保将包com.foo.bar.tests放在测试类中.这是一个示例类:
package com.foo.bar.tests;import com.foo.bar.baz.Foo;import org.junit.*;import junit.framework.*;import static org.junit.Assert.*;public class MyTests extends TestCase { public voID testSomething() { Foo testFoo= new Foo(); assertEqual(testFoo.getbar(),1); }} 接下来是使用ant测试运行测试的情况.要实现此目的,请在最后一个右括号(< / manifest>)之前将以下内容添加到AndroIDManifest.xml中:
<instrumentation androID:name="androID.test.InstrumentationTestRunner" androID:targetPackage="com.foo.bar" androID:label="Tests for com.foo.bar"/>
你还需要
<uses-library androID:name="androID.test.runner" />
添加到您的<应用程序>部分.
我无法弄清楚需要改变什么才能在本地进行测试,而不是在设备上进行测试,但这是75%的答案,希望将来对我这样的人有所帮助.
编辑:
通过在build.xml中的最后一个导入下面添加以下内容,可以隐藏原始的ant测试行为:
<target name="test" > <junit> <!-- all your junit stuff here --> </junit> </target>总结
以上是内存溢出为你收集整理的单元测试Android应用程序逻辑全部内容,希望文章能够帮你解决单元测试Android应用程序逻辑所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)