How to run a simple JUnit4 test in Android Studio 1.1?

I have an Android project that shows “Hello World”. It was created from the “Blank Activity” template from Android Studio.

I then add/create a new java class in my application package (the same package that has my activity). I call it Shape and add a simple constructor

  • How do I use AIDL tool from command line using SDK sample code?
  • How do Media Player Android apps like MXPlayer and MoboPlayer play unsupported file formats like MKV?
  • setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (SequencerActivity) back.setOnClickListener(this);
  • How to run an android app in background?
  • how to attach multiple files to email client in android
  • Capture photo rotate 90 degree in samsung mobile
  • public class Shape {
        public Shape(int i){
            if (i==0){
                throw new IllegalArgumentException("Cant have 0");
            }
        }
    }
    

    Great. Now I have a class that isn’t touching Android at all, and I want to unit test it. What should I do next?

    This is where my question stops. Below I’ll go through what I tried.

    Please note that I really have never tested before in Android or Java. Excuse me for “rookie” mistakes.

    1. While in the Shape.java I go to “Navigate” > “Test”
    2. Hit enter to select “Create new Test”
    3. Get this popup, and select JUNIT4.

    enter image description here

    1. I then hit the fix button to fix the library not being found
    2. I get this popup

    enter image description here

    1. I’m not really sure what to select, so I select the default/highlighted.
    2. I write my test

      package com.eghdk.getjunit4towork;
      
      import org.junit.Test;
      
      import static org.junit.Assert.*;
      
      public class ShapeTest {
          @Test(expected = IllegalArgumentException.class)
          public void testShapeWithInvalidArg() {
              new Shape(0);
          }
      }
      
    3. At this point, I’m not really sure how to run my tests, but try to do this:
      enter image description here

    4. I get these errors when running

      Error:(3, 17) Gradle: error: package org.junit does not exist
      Error:(5, 24) Gradle: error: package org.junit does not exist
      Error:(8, 6) Gradle: error: cannot find symbol class Test

    Related posts:

    Clear the entire history stack and start a new activity on Android
    Android: error including/repacking dependencies which reference javax core classes
    Is there any disadvantage to using only high resolution image resources for an Android application?
    Is it possible to parcel a generic class?
    Disabled Keyguard Lock re-enables itself after clicking on a notification
    Android studio Logcat slow in displaying results
  • Gradle Could not find method compile() for arguments
  • Count lines of code in all java classes in Android Studio
  • How to determine if one of my activities is in the foreground
  • Android open ContextMenu on short click + pass item clicked details
  • How to change fragments using Android navigation drawer
  • TYPE_TOAST alternative that will not request permission?
  • 4 Solutions collect form web for “How to run a simple JUnit4 test in Android Studio 1.1?”

    Since Android Studio 1.1, there is (experimental) unit test support. A couple of quotes from that page:

    You will have to specify your testing dependencies in the build.gradle
    file of your android module. For example:

    dependencies {
      testCompile 'junit:junit:4.12'
      testCompile "org.mockito:mockito-core:1.9.5"
    }
    

    To use unit testing support in AS, you have to do the following steps:

    1. Update build.gradle to use the android gradle plugin version 1.1.0-rc1 or later (either manually in build.gradle file or in the UI in File > Project Structure)

    2. Add necessary testing dependencies to app/build.gradle (see above).

    3. Enable the unit testing feature in Settings > Gradle > Experimental.

    4. Sync your project.

    5. Open the “Build variants” tool window (on the left) and change the test artifact to “Unit tests”.

    6. Create a directory for your testing source code, i.e. src/test/java. You can do this from the command line or using the
      Project view in the Project tool window. The new directory should be
      highlighted in green at this point. Note: names of the test source
      directories are determined by the gradle plugin based on a convention.

    7. Create your test. You can do this by opening a class, right-clicking its name and selecting “Go to > Test”. Add some test
      cases.
    8. Right click your new test class or method and select “Run …”.
    9. (Optional) You can decrease the compilation time by using Gradle directly. To do this, go to the Run menu and select “Edit
      configurations”. There, find the default JUnit template, remove the
      “Make” before-launch step and add a “Gradle aware make” step instead
      (leave the task name empty).

    It is important to know that there are two test types: androidTest and plain test.

    • androidTest is primarily for tests you run on an emulator or device, such as instrumentation tests. From the command line, you use ./gradlew connectedCheck to run these.
    • test is for tests you don’t want to run on a device, such as the unit test you wrote. You run ./gradlew test to run these tests.

    As stated in the quote, you switch between androidTest and test in Android Studio by changing the test artifact.

    Naturally, it is preferred to not run tests on a device or emulator, since this speeds up the testing process a lot. With the new experimental unit test support, you gain access to stubbed Android API’s without using a device. This lets you move more tests from androidTest to test.

    For android studio 1.2 or greater, I include this answer since this is one of the first ranking at google and this is an excelent and VERY easy to follow tutorial on how to set unit tests with Android Studio, this is the link: https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1

    After wasting 2 hours trying to run test I finally did it with the above link, hope it is as useful for you as for me.

    Nowadays Android Studio (current ver. 1.4) has full Unit test support without any workarounds. Just as suggested in the automatically generated ExampleUnitTest:

    To work on unit tests, switch the Test Artifact in the Build Variants view.

    screen shot

    Go to settings then build tools then gradle and then experimental. In experimental uncheck enable all test artifacts. Thats it game over

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.