6

के साथ कुछ विफल रहा है, मैं रोबोगुइस 2 के लिए एस्ट्रोबॉय उदाहरण कोड और दस्तावेज़ीकरण देख रहा हूं, और मैं ईमानदारी से स्टंप हूं। मुझे उम्मीद है कि आप सभी कोशिश करने के लिए चीजों के साथ मेरी मदद कर सकते हैं। यहां लक्ष्य यह सुनिश्चित करने के लिए मॉड्यूल का परीक्षण करना है कि यह लोड हो रहा है और आईओसी काम कर रहा है/वायर्ड हो रहा है।यूनिट परीक्षण करने का प्रयास कर रहा है और RoboGuice.newDefaultRoboModule() Roboguice 2.0b3 और Robolectric

मैं एक परीक्षण है कि उनके उदाहरण की तरह है: http://code.google.com/p/roboguice/source/browse/astroboy/src/test/java/org/roboguice/astroboy/controller/Astroboy2Test.java?name=roboguice-2.0b3&r=ba37ef680410c64f7f1fe90f5b7b482958d276b5

खान दो तरह से अलग है ... मेरी मॉड्यूल एक पुस्तकालय वर्ग है, जो वाक्य रचना से समान है में है:

public class MyTestModule extends AbstractModule { 
     @Override 
     protected void configure() { 
      bind(Vibrator.class).toInstance(vibratorMock); 
     } 
} 

मैं भी मूल्य फ़ोल्डर

<resources> 
    <string-array name=roboguice_modules> 
     <item>com.yourdomain.MyTestModule</item> 
    </string-array> 
<resources> 

परीक्षण परियोजना का संदर्भ एप्लिकेशन परियोजना में पुस्तकालय कक्षा में roboguice.xml है, जो एच संदर्भ और पुस्तकालय परियोजना निर्यात करता है।

परीक्षण परियोजना यह इतना की तरह है में:

@RunWith(RobolectricTestRunner.class) 
public class MyTest { 

    @Before 
    public void setup() { 
    // Override the default RoboGuice module 
    RoboGuice.setBaseApplicationInjector(Robolectric.application, RoboGuice.DEFAULT_STAGE, Modules.override(RoboGuice.newDefaultRoboModule(Robolectric.application)).with(new MyTestModule())); 
} 

सेटअप के दौरान, यह हमेशा अशक्त अपवाद के कुछ प्रकार के साथ त्रुटियों। मैंने इसे तोड़ दिया है, और विशेष रूप से newDefaultRoboModule विधि के साथ। मुझे पता है कि Robolectric.application शून्य नहीं है, और मुझे पता है कि नया MyTestModule या तो शून्य नहीं है। हालांकि डीबगर के माध्यम से कदम उठाने पर, मैंने पाया कि MyTestModule.binder शून्य है, इसलिए मुझे नहीं पता कि यह कोई समस्या है या नहीं।

त्रुटि स्टैक ट्रेस: ​​

java.lang.NoClassDefFoundError: javax/inject/Provider 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(Unknown Source) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at javassist.Loader.findClass(Loader.java:379) 
at com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.findClass(RobolectricClassLoader.java:72) 
at javassist.Loader.loadClass(Loader.java:311) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.loadClass(RobolectricClassLoader.java:49) 
at roboguice.RoboGuice.newDefaultRoboModule(RoboGuice.java:144) 
at test.yourdomain.MyTest.setup(MyTest.java:45) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) 
at com.xtremelabs.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:284) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: java.lang.ClassNotFoundException: javax.inject.Provider 
at java.net.URLClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at javassist.Loader.delegateToParent(Loader.java:428) 
at javassist.Loader.loadClassByDelegation(Loader.java:406) 
at javassist.Loader.loadClass(Loader.java:308) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at com.xtremelabs.robolectric.bytecode.RobolectricClassLoader.loadClass(RobolectricClassLoader.java:49) 
... 36 more 

और कहाँ मैं देखना चाहिए? मुझे लगता है कि यह सब कैसे परीक्षण के माध्यम से बंधे हैं।

देख के लिए धन्यवाद, केली

+0

तो मुद्दा प्रदाता के इंजेक्शन है, जो एक guice 3.0 वर्ग है साथ रहती है। क्या इसका मतलब है कि मुझे प्रदाता को इंजेक्ट करने की ज़रूरत है? मैंने सोचा था कि इन सभी चीजों के साथ रोबोगुइस को तार दिया गया था। रोबोगुइस 2 और यूनिट परीक्षण के साथ आप क्या करते हैं? – KellyTheDev

+0

मामूली अद्यतन। उदास: मैं कभी भी काम करने के लिए roboguice प्राप्त करने में सक्षम नहीं था। और आगे बहुत पीछे जाने के बाद, मैं roboguice 1.1.2 और कोई roboletric का उपयोग करने के लिए डाउनग्रेडिंग घायल हो गया। मेरी इच्छा है कि इस मोर्चे में और अधिक समर्थन हो, लेकिन कम से कम यूनिट परीक्षण चल रहे हैं। वापस देखकर और अब मुझे क्या करना है, मुझे लगता है कि मुझे प्रदाता को परीक्षण समय पर परीक्षण में इंजेक्ट करना होगा, लेकिन मुझे नहीं पता। मुझे अभी भी यह जानना अच्छा लगेगा कि अगर किसी के पास विचार है तो ऊपर का उपयोग कैसे करें। अगर कोई मुझे ब्राउजुइस 1.1.2 और एंड्रॉइड के लिए जो कुछ भी करता है, उसे साझा करना चाहता है तो मैं भी खुश हूं। मुझे निजी संदेश भेजो। – KellyTheDev

+0

क्या आपने कभी रोबोगुइस आपूर्ति नमूना आवेदन और यह कैसे सेटअप किया है देखा है। यह सब वहाँ है .. –

उत्तर

9

साथ नवीनतम मैं अपने roboguice 2.0 सेटअप के साथ guice 3.0 जिप से javax.inject.jar शामिल करने के लिए की जरूरत है।

https://github.com/google/guice/wiki/Guice30

+1

ओहूह! सलाह के लिये धन्यवाद। मैं इसे आज़माउंगा और आपको बता दूंगा। यदि यह सब कुछ है, तो [यह] कुल उत्कृष्टता @ सोलेरेपर है। – KellyTheDev

+1

अंत में, मैं इसके माध्यम से जाने और इसे परीक्षण करने में सक्षम था। @ मॉरीट्ज फिर से धन्यवाद! आप सुझाव हैं कि चाल अच्छी तरह से किया गया है। (मुझे खेद है कि इस पर वापस आने में मुझे इतना लंबा लगा) – KellyTheDev

+1

वास्तव में एक लंबा समय लिया ** जी ** – Moritz

0

Roboguice परियोजना नमूना आवेदन में एक robolectric परीक्षण है। इसे देखें in the source. मैं एक ही दृष्टिकोण का उपयोग कर रहा हूं और यह मेरे लिए ठीक काम करता है।

मैं निश्चित रूप से जल्द ही Roboguice के 2.x में अपग्रेड करने का सुझाव दूंगा। रिहाई ..

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