我如何在机器人上使用JMock?我有几个帖子说这是不可能的,但肯定有某种的方法可以做到这一点吗?
问题似乎是让安卓能够识别JMock jar文件。所以,也许有一种解决方案,将jar放入资产中,并制作自定义类加载器?这听起来很麻烦,但听起来会起作用吗?
发布于 2010-10-12 15:53:59
我让JMock在安卓开源测试项目中工作。
是的: JMock代码在您手中的设备上执行;-)
我用过:
有关Android JMock测试用例http://github.com/olibye/ToneDial/blob/master/ToneDialTest/src/net/xpdeveloper/dialer/test/TestDialServiceTest.java,请参阅以下内容
以下是我必须克服的三个问题:
Hamcrest包装
Hamcrest的多个打包无法通过Android包验证。
在Android中遇到的错误是:-错误生成最终存档:重复条目: LICENSE.txt
溶液
在同一个目录中解压缩hamcrest-core-1.1.jar,解压缩hamcrest-库-1.1.jar。
这是第二个解压缩覆盖MANIFEST.MF和LICENCE.TXT。
zip ../hamcrest-all-1.1.jar
最初,我和史蒂夫和纳特一起为JMock提过这个问题
然而,这确实是Joe在Hamcrest的包装问题(所以我刚刚在那里发布了;-)
JUnit封装
eclipse中的JUnit插件包含Hamcrest的一个子集。
解决方案您需要在eclipse项目属性中将JUnit库在JMock之后的类路径中移动。
Android封装
JUnit v3是android.jar的一部分,所以不能使用JUnit 4样式的JMock测试。我们还没有注释;-)
发布于 2018-10-23 16:13:46
时代已经变了,@byeo的答案比所需的要复杂得多,因为事情正在被修正和改进。
使用AndroidStudio3.1.4,我能够轻松地让JMock和Hamcrest工作,至少在Unit测试中是这样。我将以下依赖项添加到我的build.gradle文件中:
dependencies{
....
testImplementation files('../../../../lib/jmock-2.8.3/jmock-2.8.3.jar')
testImplementation files('../../../../lib/jmock-2.8.3/jmock-junit4-2.8.3.jar')
testImplementation files('../../../../lib/jmock-2.8.3/jmock-legacy-2.8.3.jar')
testImplementation files('../../../../lib/jmock-2.8.3/objenesis-2.1.jar')
testImplementation files('../../../../lib/jmock-2.8.3/hamcrest-core-1.3.jar')
testImplementation files('../../../../lib/jmock-2.8.3/hamcrest-library-1.3.jar')
testImplementation files('../../../../lib/cglib-nodep-3.2.5.jar')
....
}但是,由于以下问题,我不确定JMock在使用仿真程序或实际硬件的测试中是否正确工作:
JMock jars do not work inside Android test project (project doesn't build )
https://stackoverflow.com/questions/3580647
复制相似问题