[关闭]
@natsumi 2017-12-11T05:10:54.000000Z 字数 2807 阅读 914

Architecture Components Basic Sample

Android


参考

关于 Architecture Components 的所有官方 sample

Run App & Test

上面这个git里面有很多 sample,每个 sample 都可以是独立的 project,但是又依赖根目录下的 versions.gradle 这就比较蛋疼。。

所以还是用懒人的方式导入吧~

导入sample

然鹅导入其实和 https://github.com/googlesamples/android-architecture-components/tree/master/BasicSample 没有区别。。还是要手动在跟目录加上 versions.gradle

versions.gradle放到project目录下,然后改一下build.gradle里的路径,然后App就可以运行了

  1. // ./build.gradle
  2. buildscript {
  3. apply from: './versions.gradle'
  4. addRepos(repositories)
  5. dependencies {
  6. classpath deps.android_gradle_plugin
  7. // NOTE: Do not place your application dependencies here; they belong
  8. // in the individual module build.gradle files
  9. }
  10. }
  11. allprojects {
  12. addRepos(repositories)
  13. }
  14. task clean(type: Delete) {
  15. delete rootProject.buildDir
  16. }

运行之后可以看到 App 主要有两个页面
一个是 product 的列表页

此处输入图片的描述

点击Item进入 product 的详情页,header 是 product 的信息,下面是 comment 列表。

此处输入图片的描述

然后Test运行的时候可能会报错👇

  1. !!! JUnit version 3.8 or later expected:
  2. java.lang.ClassNotFoundException: junit.framework.ComparisonFailure
  3. at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  4. at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  5. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
  6. at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  7. at java.lang.Class.forName0(Native Method)
  8. at java.lang.Class.forName(Class.java:264)
  9. at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:221)
  10. at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:207)
  11. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:61)
  12. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  13. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  14. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  15. at java.lang.reflect.Method.invoke(Method.java:498)
  16. at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)

在各种 Test ( CommentDaoTest ProductDaoTest MainActivityTest ) 类加入了注解@RunWith(AndroidJUnit4.class),并在./app/build.gradle中加入了依赖( dependencies ) androidTestImplementation deps.junit然鹅也没有什么卵用

这个是 Android Studio ( Idea ) 默认的Junit版本低于3.8导致的。

解决方案是创建新的 Run Configuration
直接点代码旁边的运行按钮或是右键菜单中的运行都会自动创建 Android JUnit 的 Run Configuration ,而我们需要创建 Android Instrumented Tests

新建configuration

代码结构

java代码的结构大概这样,db、model、ui、viewmodel 四个 package

  1. .
  2. |____AppExecutors.java
  3. |____BasicApp.java
  4. |____DataRepository.java
  5. |____db
  6. | |____AppDatabase.java
  7. | |____converter
  8. | | |____DateConverter.java
  9. | |____dao
  10. | | |____CommentDao.java
  11. | | |____ProductDao.java
  12. | |____DataGenerator.java
  13. | |____entity
  14. | | |____CommentEntity.java
  15. | | |____ProductEntity.java
  16. |____model
  17. | |____Comment.java
  18. | |____Product.java
  19. |____ui
  20. | |____BindingAdapters.java
  21. | |____CommentAdapter.java
  22. | |____CommentClickCallback.java
  23. | |____MainActivity.java
  24. | |____ProductAdapter.java
  25. | |____ProductClickCallback.java
  26. | |____ProductFragment.java
  27. | |____ProductListFragment.java
  28. |____viewmodel
  29. | |____ProductListViewModel.java
  30. | |____ProductViewModel.java

db

ui

model

viewmodel

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注