Unit test configuration broke in Android Studio 3.

2019-02-25 09:36发布

问题:

I updated to Android Studio 3.1 and as suggested by Android Studio also:

  • Updated the Android gradle plugin to 3.1.0 from 2.3.0 (also tried the new 3.1.1, the problem persists)
  • Updated the buildToolsVersion to 27.0.3
  • Downloaded the Android 8.1 API 27 with the SDK manager.

I am using the JDK 8.

My previous Android Studio build configuration "Core tests" which just ran all tests in one module now says:

Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.5.1-all.zip'.

My set up:

The exact exception as shown in the ide:

My full source code: https://github.com/Leejjon/BluffPoker

Apparently the same Nullpointer occurs when running this on the command line: gradle :core:test This command will fail with the same NullPointer. Doing a test on the root project like gradle test will run fine. I can also deploy the app on my Android phone. This is probably not IntelliJ related but the Android gradle plugin 3.1.0 breaking the ability to run the gradle :core:test command.

TLDR: Running any gradle task in the core module like gradle :core:sometask seems to result in a null pointer since Android gradle plugin 3.1.0.

My workaround for now is to use the gradle test command to run all tests in all modules and study the generated html pages by junit (found in BluffPoker\core\build\reports\tests\test\index.html) to troubleshoot whether they are failing.

回答1:

As this bug commenter pointed out: https://issuetracker.google.com/issues/77605097#comment7

disabling the "configure on demand" feature of Gradle (in Settings: Build, Execution, and Deployment: Compiler) is a viable workaround.

Since I did this my Unit tests are all working again.



回答2:

Solution from kekkou of the libgdx forums: http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=27639&p=109249#p109249

His solution is: Move the project(':android') {} block in root build.gradle into android\build.gradle.

This makes all commands work again. I did not find any downsides.

The commit for this fix on my project: https://github.com/Leejjon/BluffPoker/commit/d10deb090c2d80e641d733efdaa85f99c0a9fe2f



回答3:

in your gradle-wrapper.properties, try using:

distributionUrl=https://services.gradle.org/distributions/gradle-4.3-rc-2-all.zip