Robolectric和Android Studio 1.1.0以及库测试

BrantApps

我无法让Robolectric单元测试在实验性的AS 1.1单元测试版本下运行。我得到的错误如下所示;

java.lang.NoClassDefFoundError: com/my/app/R$string
    at com.my.app.MoneyFormatter.formatDealMessage(MoneyFormatter.java:63)
    ...
Caused by: java.lang.ClassNotFoundException: com.my.app.R$string
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.robolectric.bytecode.AsmInstrumentingClassLoader.loadClass(AsmInstrumentingClassLoader.java:100)
    ... 46 more

我通过从根目录(在Snippet1中为app-name 执行命令来检索此错误

./gradlew core:library:test

此方法在未启用单元测试且未使用v1.0(com.android.tools.build:gradle:1.0.0)的android gradle工具的情况下在Android Studio 1.1中有效。

项目配置

我的项目具有以下规定的复杂结构;

应用名称
 |
 |->应用
    |-> src
       |-> androidTest // Espresso帮助器类位于此处
       |-> androidTestFlavour1 //与'flavor 1'相关的Espresso int测试 
       |-> androidTestFlavour2 //与'flavor 2'相关的Espresso int测试
       |-> flavour1
       |-> flavour2
       |->主要
           + AndroidManifest.xml //适用于应用程序的清单
       |-> testFlavour1 //风味1的Robolectric单元测试
       |-> testFlavour2 //风味2的Robolectric单元测试
 |->核心
       |->图书馆
           |-> src
              |-> main //库代码位于此处
                  + AndroidManifest.xml
              |->测试//库的Robolectric单元测试
 +等级
 + gradlew
 + settings.gradle
 + local.properties

片段1:项目原理图

我遵循了Pivotal Labs本身的建议,以及其他许多自家酿制的替代品,均未获得成功。

错误在说什么,我需要更改使其正确吗?

更新:因此,检查了用于运行测试的类路径后,我注意到以下库路径;

  • /workspace/app/core/lib/build/intermediates/bundles/debug/classes.jar
  • / workspace / app / core / lib / build / intermediates / classes / test / debug
  • / workspace / app / core / lib / build / intermediates / dependency-cache / test / debug

这些目录都不包含生成的R$string.class文件,因此是例外。包含生成的“ R”文件的目录包括应用程序的调试和发布构建类型。所以;

  • / workspace / app / core / lib / build / intermediates / classes / debug
  • / workspace / app / core / lib / build / intermediates / classes / release

这表明缺少添加“调试”或“发布”构建类型资源的构建过程的一部分。这也备份了纯Java测试用例(仅依赖于classes.jar)可以正常工作的行为。

BrantApps

好的!我已经工作了。我将以下行添加到库构建gradle中,以将生成的“ R”文件强制添加到测试类路径中;

sourceSets {
  test.java.srcDirs += "build/generated/source/r/debug"
}

有了这个,我达到了Robolectric测试的必杀技

./gradlew core:lib:test

基于Espresso 2.0的集成;

./gradlew connectedAndroidTest

停止为IDE中的单元和集成测试提供支持。...哦,那是什么?7年?!爱未遗失。这个答案的荣誉,向我展示了如何强行将内容添加到测试类路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android Studio中运行Robolectric测试时如何调试?

来自分类Dev

配置Robolectric,Android Studio和Gradle接受测试应用程序

来自分类Dev

Android:Robolectric不支持API级别1

来自分类Dev

AMQP 0-9-1和1-0

来自分类Dev

Android Studio单元测试支持vs robolectric

来自分类Dev

Visual Studio 2015 RC1 Update 1中的XUnit找不到测试

来自分类Dev

No, minSdk(API 15) > deviceSdk(API1) in android studio

来自分类Dev

SHA1调试和发布ANDROID STUDIO MAC的密钥

来自分类Dev

Visual Studio 2015更新1和XAML构建模板

来自分类Dev

Android Studio更改SHA1

来自分类Dev

Java矩阵0和1

来自分类Dev

Android Studio 2.2 Preview1错误

来自分类Dev

启动Android Studio 2.2预览版1时出错

来自分类Dev

Android Studio 2.2预览1 EditText错误

来自分类Dev

Android Studio 2.2.0-RC1 Gradle插件错误

来自分类Dev

明确回报0和1

来自分类Dev

在Android Studio中运行Robolectric测试时如何调试?

来自分类Dev

如何使用oracle数据库中的值验证密码,以及java中return 0和return 1有什么区别

来自分类Dev

如何为{'1','1'}和{'1','1','\ 0'}给相同的输出感到惊讶?

来自分类Dev

使用Robolectric和Dagger进行Android测试

来自分类Dev

[“ $ {1:0:1}” ='-']的含义

来自分类Dev

提取包含0 | 0,0 | 1,1 | 0和1 | 1的文件

来自分类Dev

Android Studio 2.2预览1 EditText错误

来自分类Dev

Sun Studio和“”,第1行:非法标志(-)

来自分类Dev

Android Studio Sqllite数据类型date在date1和date2之间选择

来自分类Dev

Robolectric 和 Evernotes android-job 库

来自分类Dev

为什么 gradle 与 android studio 版本有 1:1 映射

来自分类Dev

Android studio 和 gradle 下载到硬盘块 - acer revo build m1-601

来自分类Dev

为什么为 dx[dir 选择值 {1, 1, 0, -1, -1, -1, 0, 1} 和 {0, 1, 1, 1, 0, -1, -1, -1} ] 和 dy[dir]?

Related 相关文章

  1. 1

    在Android Studio中运行Robolectric测试时如何调试?

  2. 2

    配置Robolectric,Android Studio和Gradle接受测试应用程序

  3. 3

    Android:Robolectric不支持API级别1

  4. 4

    AMQP 0-9-1和1-0

  5. 5

    Android Studio单元测试支持vs robolectric

  6. 6

    Visual Studio 2015 RC1 Update 1中的XUnit找不到测试

  7. 7

    No, minSdk(API 15) > deviceSdk(API1) in android studio

  8. 8

    SHA1调试和发布ANDROID STUDIO MAC的密钥

  9. 9

    Visual Studio 2015更新1和XAML构建模板

  10. 10

    Android Studio更改SHA1

  11. 11

    Java矩阵0和1

  12. 12

    Android Studio 2.2 Preview1错误

  13. 13

    启动Android Studio 2.2预览版1时出错

  14. 14

    Android Studio 2.2预览1 EditText错误

  15. 15

    Android Studio 2.2.0-RC1 Gradle插件错误

  16. 16

    明确回报0和1

  17. 17

    在Android Studio中运行Robolectric测试时如何调试?

  18. 18

    如何使用oracle数据库中的值验证密码,以及java中return 0和return 1有什么区别

  19. 19

    如何为{'1','1'}和{'1','1','\ 0'}给相同的输出感到惊讶?

  20. 20

    使用Robolectric和Dagger进行Android测试

  21. 21

    [“ $ {1:0:1}” ='-']的含义

  22. 22

    提取包含0 | 0,0 | 1,1 | 0和1 | 1的文件

  23. 23

    Android Studio 2.2预览1 EditText错误

  24. 24

    Sun Studio和“”,第1行:非法标志(-)

  25. 25

    Android Studio Sqllite数据类型date在date1和date2之间选择

  26. 26

    Robolectric 和 Evernotes android-job 库

  27. 27

    为什么 gradle 与 android studio 版本有 1:1 映射

  28. 28

    Android studio 和 gradle 下载到硬盘块 - acer revo build m1-601

  29. 29

    为什么为 dx[dir 选择值 {1, 1, 0, -1, -1, -1, 0, 1} 和 {0, 1, 1, 1, 0, -1, -1, -1} ] 和 dy[dir]?

热门标签

归档