运行gradlew测试时android中的Jvm选项

Pi *_*nci 13 android unit-testing gradle robolectric android-gradle-plugin

我有一个使用Robolectric进行单元测试的项目.该项目使用Robolectric 3.0,需要在虚拟机选项中添加-ea-noverify选项.

在Android Studio中,我创建了新的JUnit配置Run > Edit Configurations...,然后设置VM Options-ea -noverify.通过这种方式,我成功运行我的单元测试.这是关于我的配置的图片,查看此处

但是,对于持续部署,我需要使用命令行运行单元测试.所以我./gradlew test用来运行单元测试.我也添加org.gradle.jvmargs=-ea -noverifygradle.properties文件中.不幸的是,它不起作用.我可以运行单元测试,但我得到了java.lang.VerifyError,我认为这gradle.properties不是负载.

所以,我的问题是,如何gradle.properties加载或者你知道如何解决我的vm选项问题吗?

tas*_*iac 27

已经回答了,但这可能是一个更简单的解决方案:

build.gradleandroid闭包中的应用程序模块文件中,添加它.

android {
  ....

  testOptions {
    unitTests.all {
      jvmArgs '-noverify'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有人有使用Android Studio 2.3的经验?即使这样,我仍然看到测试崩溃. (3认同)
  • 这个太干净了."gradle way" (2认同)

Pi *_*nci 8

我发现我们可以将这个块添加到app的build.gradle来解决这个问题

tasks.whenTaskAdded { theTask ->
    def taskName = theTask.name.toString()
    if ("testDevDebug".toString().equals(taskName)) {
        theTask.jvmArgs('-ea', '-noverify')
    }
}
Run Code Online (Sandbox Code Playgroud)

DevDebug 是我的构建变体.