2015-03-17 10 views
10

काम नहीं कर रहा है मैं एंड्रॉइडस्टूडियो में एक साधारण यूनिट परीक्षण करने की कोशिश कर रहा हूं और यह काम नहीं कर रहा है। मैंने कई ट्यूटोरियल्स का पालन करने की कोशिश की है लेकिन अभी तक कोई सफलता नहीं है।एंड्रॉइड स्टूडियो सरल यूनिट टेस्ट

जब मैं परीक्षण चलाने के लिए, यह त्रुटि संदेश से पता चला है:

java.lang.RuntimeException: Method setUp in android.test.ActivityInstrumentationTestCase2 not mocked. 

मेरा परीक्षण वर्ग:

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> { 

    public MainActivity activity; 

    public MainActivityTest() { 
     super(MainActivity.class); 
    } 

    @Before 
    public void setUp() throws Exception { 
     super.setUp(); 
     activity = getActivity(); 
    } 

    @Test 
    public void testApp() throws Exception { 
     assertTrue(true); 
    } 

    @After 
    public void tearDown() throws Exception { 
     super.tearDown(); 
     activity.finish(); 
    } 
} 

MainActivity.class:

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

build.gradle (एप्लिकेशन):

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.helloworld.tripbudget" 
     minSdkVersion 19 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile 'com.android.support:appcompat-v7:22.0.0' 
    testCompile 'junit:junit:4.12' 
    testCompile "org.mockito:mockito-core:1.+" 
    compile files('libs/ormlite-android-4.49-SNAPSHOT.jar') 
    compile files('libs/ormlite-core-4.49-SNAPSHOT.jar') 
} 
+2

मैंने अभी तक नई यूनिट परीक्षण सामग्री के साथ नहीं खेला है, लेकिन अगर मैं 'ActivityInstrumentationTestCase2' के साथ काम करता हूं तो मुझे कुछ आश्चर्य होगा। इसके अलावा, इकाई परीक्षण दस्तावेज़ों में "विधि ... मजाक नहीं" अनुभाग पर एक नज़र डालें: http://tools.android.com/tech-docs/unit-testing-support – CommonsWare

+0

@ कॉमन्सवेयर बिल्कुल सही! अब यह काम कर रहा है!! बहुत बहुत धन्यवाद! –

+8

प्रदान किए गए उत्तर बॉक्स में समाधान का वर्णन करना बेहतर है और फिर "स्वीकृत" का चयन करें। यह प्रश्न संपादित करने के लिए बेहतर है जो प्रश्न को पूर्ण रूप से दर्ज नहीं किया जाता है। –

उत्तर

-3

मैं ActivityInstrumentationTestCase2 का विस्तार नहीं सुझाव है, JUnit 4.

उदाहरण के लिए https://developer.android.com/training/testing/unit-testing/local-unit-tests.html का उल्लेख का उपयोग कर।

इसके अलावा, कक्षाओं का मज़ाक उड़ाते हुए मॉकिटो बहुत फायदेमंद साबित हुआ है।

यदि आपको स्थैतिक वर्गों का नकल करने की आवश्यकता है तो पावर मॉक जूनिट और मोकिटो https://github.com/jayway/powermock/wiki/GettingStarted के साथ बहुत अच्छी तरह से काम करता है।

आशा है कि इससे मदद मिलती है!

1

ओपी जवाब पाया खुद को:

build.gradle लिए नीचे दिए गए कोड जोड़ें:

android { 
    // ... 
    testOptions { 
     unitTests.returnDefaultValues = true 
    } 
} 

Reference

+0

नहीं, वह उत्तर हमेशा मदद नहीं करता है। –

0

मैं सुझाव है कि आप परीक्षण करने के लिए निम्नलिखित के रूप में उपयोग करने के लिए अपने JUnit4 गतिविधि:

@RunWith(AndroidJUnit4.class) 
public final class MainActivityTest { 

    @Rule public final ActivityRule<MainActivity> mainActivity = new ActivityRule<>(MainActivity.class); 

    @Test 
    public void testApp() { 
     mainActivity.someFunction(); 
    } 
} 
+0

यह केवल इंस्ट्रुमेंटेशन परीक्षणों पर लागू है, जेवीएम परीक्षण नहीं। –

संबंधित मुद्दे