我的应用程序是运行在/system/app中的服务
com.abc.def.MyApp为了编写单元测试,我在运行时在logcat中得到了这个错误。
I/TestGrouping( 5647): TestCase class com.abc.def.test.MyAppTest is missing a public constructor with no parameters or a single String parameter - skipping使用的命令:
D:\tmp_install>adb shell am instrument -w com.abc.def.test/android.test.InstrumentationTestRunner
WARNING: linker: memtrack.jacinto6.so: unused DT entry: type 0xf arg 0x115
WARNING: linker: libsrv_um.so: unused DT entry: type 0xf arg 0xc4e
WARNING: linker: gralloc.jacinto6.so: unused DT entry: type 0xf arg 0x5d9
WARNING: linker: libpvr2d.so: unused DT entry: type 0xf arg 0x778
Test results for InstrumentationTestRunner=
Time: 0.0
OK (0 tests)我的代码片段是:
public class MyAppTest extends ServiceTestCase<MyApp> {
public MyAppTest(Class serviceClass) {
super(serviceClass);
Log.d(tag, "hello world! MyAppTest ctor");
}
public MyAppTest() {
super(com.abc.def.MyApp.class);
}……
我遵循了这个答案,https://stackoverflow.com/a/8981508/398348
我是不是不正确地使用ServiceTestCase?
发布于 2015-11-24 03:30:53
正如Vesko所说,代码是正确的;但是问题的根本原因是Dex preOptimization --运行时的行为中没有显示对我的代码的更新。
解决方案?我不得不将odex文件以及apk推送到设备上。
发布于 2015-11-02 22:17:31
据我所见,您正确地使用了ServiceTestCase!
通常,您所需要的只是构造函数,它没有任何参数才能正常工作,并且您已经提供了它。
public MyAppTest() {
super(com.abc.def.MyApp.class);
}您得到的linker警告通常与NDK相关联。不过,它们对你的测试来说不应该是个问题。
虽然不是一个完整的解决方案,但我建议您尝试使用gradle connectedAndroidTest运行相同的测试。如果它们运行正常,至少我们知道问题在于am instrument --可能没有正确配置试验项目。
编辑:如果使用Gradle构建项目(默认情况下使用Android ),只需进入主项目目录并执行以下命令,该命令将运行所有的仪器测试(如上面的ServiceTestCase示例)。
./gradlew connectedAndroidTesthttps://stackoverflow.com/questions/33311533
复制相似问题