2017-01-22 5 views
5

मैं अपने एंड्रॉइड प्रोजेक्ट का परीक्षण करने के लिए 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 

और परियोजना संरचना में मैं enter image description here

jdk1.8.0_112 को यदि यह जावा के संस्करण के कारण हुई थी JDK सेट वरना,:

यहाँ मेरी जावा config बारे में कुछ जानकारी है मुझे क्या करना चाहिए? यदि नहीं, तो मुझे क्या करना चाहिए?

+7

एंड्रॉयड उपयोग पर इस स्थिर आयात: 'आयात स्थिर org.assertj.core.api.Java6Assertions *;' http://joel-costigliola.github.io/assertj/assertj-core-quick-start।। एचटीएमएल – ejohansson

+0

यह एक संकलन त्रुटि है। ऐसा तब नहीं हुआ जब आप परीक्षण चलाते थे। – EJP

उत्तर

4

ejohansson सही है, यह सुपर दिखाई देता है लेकिन org.assertj.core.api.Java6Assertionshttp://joel-costigliola.github.io/assertj/assertj-core.html में बताया गया है नहीं हो सकता है, मैं इसे भविष्य (https://github.com/joel-costigliola/assertj/issues/63) में स्पष्ट करने की कोशिश करेंगे।

प्रलेखन अद्यतन किया गया है, उम्मीद है कि यह आसान एंड्रॉयड डेवलपर्स सही दावे प्रवेश बिंदु को खोजने के लिए होगा: http://joel-costigliola.github.io/assertj/assertj-core.html#android

+0

ओह, यह मेरी गलती है, मैंने [एक मिनट की शुरूआत मार्गदर्शिका] (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html) पर नहीं पढ़ा, धन्यवाद! –

0
के साथ एंड्रॉयड स्टूडियो

, यह शायद exclude org.assertj.core.api.Assertions from auto-import लिए एक अच्छा विचार है, तो यह में नहीं होता है भविष्य के बाद, आप इसके बारे में भूलने के बाद:

  1. एक पल के लिए स्थिर आयात हटाएं।
  2. समस्याग्रस्त जोर से नेविगेट करने के लिए F2 दबाएं।
  3. Alt दबाएं + दर्ज उपलब्ध इरादा कार्यों की सूची दिखाने के लिए।
  4. Assertions (org.assertj.core.api) के लिए प्रविष्टि को हाइलाइट करें और पर हिट करें।
  5. का चयन करें, जो कि पॉप-अप की गई सूची में ऑटो-आयात से 'org.assertj.core.api.Assertions' को बाहर निकालें।
संबंधित मुद्दे