Android Instrumentation测试没有从库项目中找到类

Nil*_*zor 5 android android-testing

所以我NoSuchMethodError从Android Studio运行我的Activity/instrumentation测试,在代码行上试图从单元测试中调用库模块中的方法.

所以这是我的测试:

public class MainActivityTest extends ActivityInstrumentationTestCase2 {
    public void testMainActivity() {
        final MainActivity target = (MainActivity) getActivity();
        MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
Run Code Online (Sandbox Code Playgroud)

这是什么交易?我已经将我的库定义为build.gradle中的"编译" - 依赖,并且编译得很好.该库也可以从主应用程序类中调用而不会出现问题.只有当我从测试中调用它时才会失败.我的应用程序和我的测试都在同一模块中.

我已经尝试手动运行clean任务,assembleDebug和assembleDebugTest任务.徒劳无功.

项目结构:

Root
 |---MyApp 
 |     |---src/main/...
 |     |---src/androidTest/...
 |----MyLibrary
Run Code Online (Sandbox Code Playgroud)

运行Android Studio v1.0.2 Gradle构建工具v1.0.0使用默认的Instrumentation测试运行器从AS的Run/Debug配置作为模块"MyApp"上的"Android Test"运行.

Nil*_*zor 8

好的,这个有点棘手.关键词:proguard minify.由于迄今为止新实现的方法被仪器测试使用,因此proguard没有了解其使用情况,因此在proguardDebugTest构建步骤中将其从DEX中删除.

解决方案:在调试版本中禁用缩小(在gradle中:) android.buildTypes.debug.minifyEnabled false,或使用主应用程序中的方法.