【发布时间】:2015-03-30 00:50:57
【问题描述】:
因此,当我从 Android Studio 运行我的 Activity/instrumentation 测试时,在尝试从单元测试调用库模块中的方法的代码行上,我得到了一个 NoSuchMethodError。
所以这是我的测试:
public class MainActivityTest extends ActivityInstrumentationTestCase2 {
public void testMainActivity() {
final MainActivity target = (MainActivity) getActivity();
MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
这里有什么问题?我已将我的库定义为 build.gradle 中的“编译”依赖项,并且它编译得很好。该库也可以毫无问题地从主应用程序类中调用。只有当我从测试中调用它时它才会失败。我的应用和我的测试在同一个模块中。
我尝试过手动运行 clean 任务、assembleDebug 和 assembleDebugTest 任务。没用。
项目结构:
Root
|---MyApp
| |---src/main/...
| |---src/androidTest/...
|----MyLibrary
运行 Android Studio v1.0.2 Gradle 构建工具 v1.0.0 使用默认 Instrumentation 测试运行器在 AS 的运行/调试配置中作为模块“MyApp”上的“Android 测试”运行。
【问题讨论】:
-
在 Eclipse>>项目属性>>Android>> 确保您正在测试的项目在库下被引用。 'is library' 可以保持未选中状态
-
这两个都没有真正命名 - 我匿名了 SO 的代码。但这不是问题——如果我有语法错误,代码就不会编译。它编译,但运行时失败
-
抱歉,我在您回复时编辑了我的评论。大多数有关该主题的帖子都说您正在找到该库的两个版本,一个在编译期间,另一个在运行时。
-
我可能应该停止评论。我刚刚看到您使用的是 Studio 而不是 Eclipse。哇!
-
哈哈,谢谢你的尝试:)