Unit tests not working on Android Studio Arctic Fox

I've recently installed Android Studio Arctic Fox v2020.3.1 Beta 2 to be able to use Jetpack Compose in our project since I wasn't able to do so back on AS 4.2.1 because Compose was throwing a strange build error that got fixed on Arctic Fox.

So here's the problem, after loading the project, updating some SDKs/libraries I was able to build and run no problem, however, when I went to run the unit tests I noticed that all test classes were no longer recognized by the IDE. After some investigation I found out that newer versions of AS will no longer recognize JUnit configurations.

As you can see in the screenshots below there is no way to run those tests as I normally would:

enter image description here

enter image description here

And this one is from Run/Debug Configurations where the JUnit tests are under the unknown category:

enter image description here

Finally, I did create a gradle config to test but it just says on the left side:

Test events were not received

And throws an error on the right side:

Execution failed for task 'features:signup:testDevDebugUnitTest'. No tests found for given includes: com.projectsaturn.android.features:signup.SignupViewModelTest

I wonder if anyone out there has come across this issue and was able to resolve?

Any help is appreciated!

UPDATE 01:

So I decided to roll everything back and start from scratch. This time I only updated a few things:

  • Gradle: com.android.tools.build:gradle:7.0.0-beta02
  • Kotlin: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32
  • Crashlytics: com.google.firebase:firebase-crashlytics-gradle:2.6.1
  • Test (core, runner and rules): androidx.test:core/runner/rules:1.3.0

Now the issue is that all unit tests fail when I run it via Gradle. I suspect that it isn't running the @Before annotated function prior to running the actual tests functions. Or I'm not setting the Gradle test properly (screenshot below)?

enter image description here


If you're using Android Studio Arctic Fox, you need to modify your app/build.gradle a bit.

Add

android {
    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'

        unitTests.all {
            useJUnitPlatform() // <--- this is the important part
        }
    }
}

And also make sure you add junit-engine to your dependencies

testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.7.1'

This might not be the solution for everyone but our project had many unit tests that are broken due to Android Studio Arctic Fox's Gradle test runner. It appears that if you update to the latest Gradle plugin, right clicking on a test class will prompt a new Gradle "Create test" option.Create Gradle test option.

We have not updated the plugin yet so our solution was to make our own Gradle Run Configuration for Unit tests.

This can be done by:

  1. Go to Toolbar > Run > Edit Configurations
  2. Then create a new configuration under Gradle with tasks for the tests you want to run Run Configurations The Old Android JUnit tests are what Android Studio run by default without the plugin update.

I have tried some posted solutions but no one worked for me.

The solution That worked for me is to use java 8(version 1.8) not Java that bundled with Android Studio which is (11.0.10) for Arctic fox.

Steps

  • File -> Settings -> Build -> gradle -> gradle JDK
  • choose download JDK
  • choose version 1.8
  • click download
  • after finish click apply and run tests again

[Update] in case of your targeting android 12 So this require AGP 7.0+ which require Java 11 Solution will not be applicable Otherwise above solution will fit.


It won't be a great solution but for me, it works only when I'm using JDK 1.8 as Gradle JDK.

To change the Gradle JDK please open Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK.

By clicking the list and using Download JDK... JDK 1.8 can be downloaded.