我试图让测试(junit和robolectric)在Android项目中工作,但我完全陷入困境.我的主要问题是我用gradle找到的所有测试都以某种方式拉入java插件然后我得到了这个错误:
The 'java' plugin has been applied, but it is not compatible with the Android plugins.
Run Code Online (Sandbox Code Playgroud)
我目前看到的唯一出路是分成测试和应用项目 - 但我想避免这种情况.任何示例/提示都将受到高度赞赏!
在官方文档中没有提到单元测试 - 只有仪器测试 - 但我希望单元测试能够快速获得结果.
所以我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"运行.