Android 仪器测试未从库项目中找到 类
Android Instrumentation test does not find classes from library project
所以当 运行 我的 Activity/instrumentation 测试来自 Android Studio 时,我在尝试调用库中的方法的代码行上得到 NoSuchMethodError
来自单元测试的模块。
所以这是我的测试:
public class MainActivityTest extends ActivityInstrumentationTestCase2 {
public void testMainActivity() {
final MainActivity target = (MainActivity) getActivity();
MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
这是怎么回事?我已将我的库定义为 build.gradle 中的 "compile" 依赖项,并且编译正常。该库也可以从主应用程序 类 中毫无问题地调用。只有当我从测试中调用它时它才会失败。我的应用程序和我的测试在同一个模块中。
我已经尝试 运行 clean 任务,手动执行 assembleDebug 和 assembleDebugTest 任务。没有用。
项目结构:
Root
|---MyApp
| |---src/main/...
| |---src/androidTest/...
|----MyLibrary
运行 Android Studio v1.0.2
Gradle 构建工具 v1.0.0
运行 作为模块 "MyApp" 上的 "Android Test" 来自具有默认 Instrumentation 测试运行器的 AS Run/Debug 配置。
Gradle
不是最新的。但我认为如果尝试编写仪器测试,我们应该在 build.gradle
中指定 testCompile
或 androidTestCompile
依赖项。
有用的链接:
http://gradle.org/docs/current/userguide/java_plugin.html
Specifying test dependencies with the Gradle Android build system
希望对您有所帮助
好吧,这个有点棘手。关键字:proguard minify。由于到目前为止新实现的方法 仅 被仪器测试使用,proguard 没有使用它,因此在 proguardDebugTest 构建步骤中将其从 DEX 中删除。
解决方案:要么在调试版本中禁用缩小(gradle:android.buildTypes.debug.minifyEnabled false
),要么在主应用程序中使用该方法。
所以当 运行 我的 Activity/instrumentation 测试来自 Android Studio 时,我在尝试调用库中的方法的代码行上得到 NoSuchMethodError
来自单元测试的模块。
所以这是我的测试:
public class MainActivityTest extends ActivityInstrumentationTestCase2 {
public void testMainActivity() {
final MainActivity target = (MainActivity) getActivity();
MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
这是怎么回事?我已将我的库定义为 build.gradle 中的 "compile" 依赖项,并且编译正常。该库也可以从主应用程序 类 中毫无问题地调用。只有当我从测试中调用它时它才会失败。我的应用程序和我的测试在同一个模块中。
我已经尝试 运行 clean 任务,手动执行 assembleDebug 和 assembleDebugTest 任务。没有用。
项目结构:
Root
|---MyApp
| |---src/main/...
| |---src/androidTest/...
|----MyLibrary
运行 Android Studio v1.0.2 Gradle 构建工具 v1.0.0 运行 作为模块 "MyApp" 上的 "Android Test" 来自具有默认 Instrumentation 测试运行器的 AS Run/Debug 配置。
Gradle
不是最新的。但我认为如果尝试编写仪器测试,我们应该在 build.gradle
中指定 testCompile
或 androidTestCompile
依赖项。
有用的链接:
http://gradle.org/docs/current/userguide/java_plugin.html
Specifying test dependencies with the Gradle Android build system
希望对您有所帮助
好吧,这个有点棘手。关键字:proguard minify。由于到目前为止新实现的方法 仅 被仪器测试使用,proguard 没有使用它,因此在 proguardDebugTest 构建步骤中将其从 DEX 中删除。
解决方案:要么在调试版本中禁用缩小(gradle:android.buildTypes.debug.minifyEnabled false
),要么在主应用程序中使用该方法。