I am using org.assertj:assertj-core:3.6.2 to test my Android project. According to offical ducoment , I have to use java 8 with assertj 3.x.
Here is my test class, I am trying to check when a click has executed code that might start the expected activity.
import android.content.Intent; import org.assertj.core.api.Assertions; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowActivity; @RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) public class LoginActivityTest { @Test public void testBtnLogin(){ LoginActivity loginActivity = Robolectric.setupActivity(LoginActivity.class); loginActivity.findViewById(R.id.btnLogin) .performClick(); Intent expectedIntent = new Intent(loginActivity,MainActivity.class); ShadowActivity shadowActivity = Shadows.shadowOf(loginActivity); Intent actualIntent = shadowActivity.getNextStartedActivity(); Assertions.assertThat(actualIntent).isEqualTo(expectedIntent); } }
But when I run the test, I got this error:
:app:compileDebugUnitTestJavaWithJavac (Thread[Daemon worker,5,main]) started. :app:compileDebugUnitTestJavaWithJavac file or directory '/home/workspace/android/AndroidLib/app/src/testDebug/java', not found Executing task ':app:compileDebugUnitTestJavaWithJavac' (up-to-date check took 0.006 secs) due to: Output file /home/workspace/android/AndroidLib/app/build/intermediates/classes/test/debug/com/cavalry/androidlib/sample/ui/activity/LoginActivityTest.class has been removed. All input files are considered out-of-date for incremental task ':app:compileDebugUnitTestJavaWithJavac'. Compiling with source level 1.7 and target level 1.7. file or directory '/home/workspace/android/AndroidLib/app/src/testDebug/java', not found Compiling with JDK Java compiler API. /home/workspace/android/AndroidLib/app/src/test/java/com/cavalry/androidlib/sample/ui/activity/LoginActivityTest.java:43: error: cannot access Path Assertions.assertThat(actualIntent).isEqualTo(expectedIntent); ^ class file for java.nio.file.Path not found 1 error :app:compileDebugUnitTestJavaWithJavac FAILED :app:compileDebugUnitTestJavaWithJavac (Thread[Daemon worker,5,main]) completed. Took 0.556 secs.
I searched on google and found that this could cause the wrong version of java (I'm really not sure about that).
The following is information about my java configuration:
$ java -version java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode) $ javac -version javac 1.8.0_112 $ update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode 1 /home/java/jdk1.8.0_112/bin/java 300 manual mode 2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode
And in the project structure, I still installed the JDK in jdk1.8.0_112 
If this was caused by a java version, what should I do? If not, what should I do?