ile başarısız oluyor RoroGuice 2 için astroboy örnek koduna ve belgelerine bakıyordum ve dürüstçe güldüm. Umarım hepiniz deneyecek şeylerle bana yardımcı olabilirsiniz. Buradaki amaç, modülün yüklenmesini ve IoC'nin çalıştığından/kablolandığından emin olmak için test etmektir.RoboGuice.newDefaultRoboModule() ile test ve bir şey denemeye çalışmak, Roboguice 2.0b3 ve Robolectric
Onların örneğe benzer bir test var: http://code.google.com/p/roboguice/source/browse/astroboy/src/test/java/org/roboguice/astroboy/controller/Astroboy2Test.java?name=roboguice-2.0b3&r=ba37ef680410c64f7f1fe90f5b7b482958d276b5
Mine iki şekilde farklı ... Benim modül sözdizimi ile aynı olan bir kütüphane sınıfı içinde:
public class MyTestModule extends AbstractModule {
@Override
protected void configure() {
bind(Vibrator.class).toInstance(vibratorMock);
}
}
Ben de değer klasörüne testi proje uygulaması projesini başvuran
<resources>
<string-array name=roboguice_modules>
<item>com.yourdomain.MyTestModule</item>
</string-array>
<resources>
kütüphane sınıfında roboguice.xml var, yüklenebileceğini Kütüphane projesine referans ve ihracat yapar. o kadar benziyor Test projede
: Kurulum sırasında
@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()));
}
null istisna çeşit her zaman hatalar. Bunu, özellikle de yeniDefaultRoboModule yöntemiyle çözdüm. Robolectric.application'ın boş olmadığını biliyorum ve yeni MyTestModule'ın da boş olmadığını biliyorum. Hata ayıklayıcıya basarken, MyTestModule.binder öğesinin boş olduğunu buldum, bu yüzden bir sorun olup olmadığını bilmiyorum.
hata yığın izleme:
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
Başka nereye bakmalıyım? Tüm bunların test yoluyla nasıl bağlandığını hissediyorum. Kelly
Yani mesele bir guice 3.0 sınıftır Sağlayıcısı enjeksiyonu ile yaşamaktadır. Bu bir sağlayıcıyı enjekte etmem gerektiği anlamına mı geliyor? Roboguice'in bütün bu şeylerle ilgili olduğunu sanıyordum. RoboGuice 2 ve Birim Testi ile ne yapıyorsunuz? – KellyTheDev
Küçük güncelleme. üzgün: Ben hiç roboguice 2 çalışma elde edemedim. Ve bir çok geri dönüşün ardından, roboguice 1.1.2'yi ve roboletrik kullanmamaya geçtim. Keşke bu cephede daha fazla destek olurdu, ama en azından birim testleri şimdi çalışıyor. Geriye baktığımda ve şimdi ne yapmak istediğimi tahmin edersem, test zamanını uygulamaya enjekte etmem gerektiğini tahmin ediyorum, ama sadece bilmiyorum. Birisi fikirleri varsa, yukarıdakilerin nasıl kullanılacağını bilmek isterim. Birisi benim roboguice 1.1.2 ve android için yaptıklarımı paylaşmamı isterse ben de çok mutluyum. Bana özel mesaj at. – KellyTheDev
Hiç roboguice tarafından sağlanan örnek uygulamaya ve nasıl kurulduğuna baktınız. Onun hepsi var .. –