2012-09-27 12 views
6

मैं अपने एंड्रॉइड परीक्षण (रोबोटियम का उपयोग करके) में मॉकिटो (1.9.5 आरसी 1) काम करने की कोशिश कर रहा हूं। इसे डीवीएम पर चलाने के लिए मैंने टेक्स-प्रोजेक्ट के क्लासपाथ में dexmaker.jar और dexmaker-mockito.jar (v 0.9) डाला।Android परीक्षण के लिए डेक्समेकर के साथ मॉकिटो का उपयोग कैसे करें?

जब ग्रहण में एक Android JUnit परीक्षण के रूप में परीक्षण निम्नलिखित चलाएँ:

package com.stampay.pos.test; 

import roboguice.RoboGuice; 
import android.app.Application; 

import com.jayway.android.robotium.solo.Solo; 
import com.stampay.pos.activities.HomeActivity; 
import com.stampay.pos.model.Consumer; 
import com.stampay.pos.util.ScannerAndroid; 

import static org.mockito.Mockito.*; 

public class HomeActivityTest extends ActivityTest<HomeActivity> { 
    private Solo solo; 
    Application app; 

    public HomeActivityTest() { 
     super(HomeActivity.class); 

    } 

    @Override 
    public void setUp() throws Exception { 
     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    @Override 
    public void tearDown() throws Exception { 
     solo.finishOpenedActivities(); 
     RoboGuice.util.reset(); 
    } 

    public void testScan() throws Exception { 

     ScannerAndroid scanner = (ScannerAndroid) getActivity().getScannerHelper(); 

     Consumer mockConsumer = mock(Consumer.class); 

     //scanner.generateResult("consumer1"); 
    } 
} 

मैं निम्नलिखित स्टैक ट्रेस मिलती है:

java.lang.ExceptionInInitializerError 
at com.stampay.pos.test.HomeActivityTest.testScan(HomeActivityTest.java:41) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) 
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) 
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584) 
Caused by: java.lang.ExceptionInInitializerError 
at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40) 
at org.mockito.Mockito.<clinit>(Mockito.java:932) 
... 15 more 
Caused by: java.lang.ExceptionInInitializerError 
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21) 
... 17 more 
Caused by: org.mockito.exceptions.misusing.MockitoConfigurationException: Failed to load interface org.mockito.plugins.MockMaker using jar:file:/data/app/com.stampay.pos.test-2.apk!/mockito-extensions/org.mockito.plugins.MockMaker 
... 15 more 
Caused by: java.lang.ClassNotFoundException: com.google.dexmaker.mockito.DexmakerMockMaker 
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
at org.mockito.internal.configuration.ClassPathLoader.loadImplementations(ClassPathLoader.java:133) 
at org.mockito.internal.configuration.ClassPathLoader.findPlatformMockMaker(ClassPathLoader.java:102) 
at org.mockito.internal.configuration.ClassPathLoader.<clinit>(ClassPathLoader.java:61) 
at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:21) 
at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:40) 
at org.mockito.Mockito.<clinit>(Mockito.java:932) 
... 15 more 

कोई सुझाव? http://code.google.com/p/dexmaker/ और http://code.google.com/p/mockito/wiki/ReleaseNotes कोई सहायक जानकारी प्रदान नहीं करते हैं।

ऐसा ही एक समस्या यहाँ रिपोर्ट किया जा रहा है: http://www.paulbutcher.com/2012/05/mockito-on-android-step-by-step/#comment-65955

अद्यतन: https://github.com/paulbutcher/mockito-on-android/tree/master/WarehouseManagerTest/libs सब से .jar फाइलों के साथ , सुचारू रूप से काम करता है, हालांकि वह पर 1.9.1

+0

मेरे पास एक ही समस्या हो रही है, मैं मैवेन का उपयोग कर निर्भरता शामिल कर रहा हूं, लेकिन मेरे पास यह वही त्रुटि है जिसे उठाया जा रहा है कि यह com.google.dexmaker.mockito.DexmakerMockMaker क्लास नहीं ढूंढ सकता है। –

+0

इसके अलावा, मैंने इसे ProGuard द्वारा हटाए जाने में देखा है, लेकिन मैंने स्पष्ट रूप से DexmakerMockMaker क्लास को रखने का प्रयास किया है। –

उत्तर

3

मैं आधारित Mockito का एक पुराना स्नैपशॉट का उपयोग करता है mockito 1.9.5-rc1 का उपयोग करने का प्रयास करने में एक ही समस्या का सामना करना पड़ा।

इसके लिए डेक्समेकर पेज notes that you need 1.9.5+, और स्पष्ट रूप से आरसी 1 इसे काट नहीं देता है। Mockito 1.9.5 appears to have just been released days ago, इसलिए इसे जल्द ही मेवेन सेंट्रल में दिखाना चाहिए।

इस बीच, आप download the 1.9.5 zip from Mockito's site कर सकते हैं। यदि आप मेवेन का उपयोग कर रहे हैं, तो आप उन जार को मैन्युअल रूप से mvn install:install-file के साथ अपने स्थानीय रेपो में इंस्टॉल कर सकते हैं। मुझे यह भी नवीनतम मैकिटो स्रोत (अप्रत्याशित 1.9.8), इमारत, और मेरे स्थानीय मेवेन रेपो में स्थापित करके काम करने के लिए मिला।

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