मैं अपने एंड्रॉइड प्रोजेक्ट का परीक्षण करने के लिए org.assertj:assertj-core:3.6.2
का उपयोग कर रहा हूं। offical ducoment के अनुसार, मुझे java 8 का उपयोग assertj 3.x के साथ करना चाहिए।क्लास फ़ाइल
यहां मेरी टेस्ट क्लास है, मैं यह सत्यापित करने की कोशिश कर रहा हूं कि क्लिक किए जाने पर क्लिक अपेक्षित गतिविधि शुरू कर सकता है।
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);
}
}
लेकिन जब मैं परीक्षण चलाने के लिए, मैं इस त्रुटि मिली:
: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.
मैं गूगल पर खोज की है और पाया है कि यह जावा के गलत संस्करण द्वारा कारण हो सकता है (मैं वास्तव में वास्तव में इस बारे में सुनिश्चित नहीं कर रहा हूँ)। ,
$ 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
jdk1.8.0_112 को यदि यह जावा के संस्करण के कारण हुई थी JDK सेट वरना,:
यहाँ मेरी जावा config बारे में कुछ जानकारी है मुझे क्या करना चाहिए? यदि नहीं, तो मुझे क्या करना चाहिए?
एंड्रॉयड उपयोग पर इस स्थिर आयात: 'आयात स्थिर org.assertj.core.api.Java6Assertions *;' http://joel-costigliola.github.io/assertj/assertj-core-quick-start।। एचटीएमएल – ejohansson
यह एक संकलन त्रुटि है। ऐसा तब नहीं हुआ जब आप परीक्षण चलाते थे। – EJP