24

I have a project that using Robolectric for unit test purpose. This project uses Robolectric 3.0 and need to add -ea and -noverify options in Virtual Machine options.

In Android Studio, I created new JUnit configuration in Run > Edit Configurations... and then set VM Options to -ea -noverify. With this way I success to run my unit test. This is image about my configure, view Here

However, for continuous deployment, I need run unit test with command line. So I use ./gradlew test to run unit test. I also add org.gradle.jvmargs=-ea -noverify to gradle.properties file. Unfortunately, it doesn't work. I can run unit test but I got java.lang.VerifyError and I think that gradle.properties was not load.

So, my question is, how to make gradle.properties load or do you know any way to fix my vm options problem?

Pi Vinci
  • 381
  • 3
  • 10

3 Answers3

43

It is already answered but this may be an easier solution:

In your application modules' build.gradle file in android closure, add this.

android {
  ....

  testOptions {
    unitTests.all {
      jvmArgs '-noverify'
    }
  }
}
tasomaniac
  • 10,234
  • 6
  • 52
  • 84
9

I found that we can add this block to app's build.gradle to solve this problem

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

DevDebug is my build variant.

Pi Vinci
  • 381
  • 3
  • 10
0

Maybe this

 ./gradlew -Dorg.gradle.jvmargs="-ea -noverify" test
Stas Parshin
  • 7,973
  • 3
  • 24
  • 43
  • I did try it before but still got the java.lang.verifyError. – Pi Vinci Sep 01 '15 at 00:43
  • I think it needs a `-P` to add as a Gradle property instead of `-D`. As I understand it, `-D` passes arguments to the JVM, whereas `-P` passes it to Gradle. In this instance, you're passing a Gradle property to pass arguments again to JVM. – Tim Kist Nov 18 '20 at 16:39