Robolectric 2.2 und ActionBarCompat

  • Antworten:7
  • Bentwortet
Mac Systems
  • Forum-Beiträge: 1.727

26.11.2013, 13:45:52 via Website

Hat jemand es von euch hinbekommen einen einfachen Test zum laufen zu bekommen ?

Ich bekomme Immer nur:


1java.lang.NoClassDefFoundError: android/support/v7/app/ActionBarActivity
2 at java.lang.ClassLoader.defineClass1(Native Method)
3 at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
4 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
5 at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
6 at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
7 at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
8 at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
9 at java.security.AccessController.doPrivileged(Native Method)
10 at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
11 at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
12 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
13 at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
14 at java.lang.ClassLoader.defineClass1(Native Method)
15 at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
16 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
17 at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
18 at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
19 at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
20 at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
21 at java.security.AccessController.doPrivileged(Native Method)
22 at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
23 at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
24 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
25 at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
26 at java.lang.Class.getDeclaredFields0(Native Method)
27 at java.lang.Class.privateGetDeclaredFields(Class.java:2397)
28 at java.lang.Class.getDeclaredFields(Class.java:1806)
29 at org.junit.runners.model.TestClass.<init>(TestClass.java:42)
30 at org.junit.runners.ParentRunner.<init>(ParentRunner.java:65)
31 at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:58)
32 at org.robolectric.RobolectricTestRunner.<init>(RobolectricTestRunner.java:85)
33 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
34 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
35 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
36 at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
37 at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
38 at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
39 at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
40 at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
41 at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
42 at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
43 at org.junit.internal.requests.SortingRequest.getRunner(SortingRequest.java:21)
44 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
45 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
46 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
47 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
48 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
49 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
50 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
51 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
52Caused by: java.lang.ClassNotFoundException: android.support.v7.app.ActionBarActivity
53 at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
54 at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
55 at java.security.AccessController.doPrivileged(Native Method)
56 at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
57 at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
58 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
59 at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
60 ... 50 more

Der Test geht schon im setup krachen:
1@RunWith(org.robolectric.RobolectricTestRunner.class)
2public class SpotnameFilterTest
3{
4
5 SearchLocationFilterActivity filterActivity;
6
7
8 @Before
9 public void setUp() throws Exception
10 {
11 filterActivity = Robolectric.buildActivity(SearchLocationFilterActivity.class).create().get();
12
13 }
Ich würde gern einen Test für einen ListView Filter schreiben, bekomme aber immer probleme. Die ActionBarCompat lib ist im classpath, daher verstehe ich das nicht so ganz was hier passiert :/


Jemand ne Idee ?

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

26.11.2013, 22:10:58 via Website

Was du mit "Einbindungen" meist weiß ich jetzt nicht, aber mein Theme erbt eh von dem ActionBarCompat Theme, ohne würde die ganze APP nicht laufen

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

27.11.2013, 06:47:44 via App

Mit einbinden meint er die Lib in eclipse.
Noch mal neu importieren und darauf achten dass die datei sich im libs ordner befindet.

— geändert am 27.11.2013, 06:47:54

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

27.11.2013, 12:15:49 via Website

Na ja, ActionBarCompat ist ein ganzes Projekt das man importieren muss und unter SDK zu finden ist, das ist alles bereits geschehen ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

27.11.2013, 20:39:23 via App

Aber die jar datei(en) in den Libs ordner der App Kopiert?
Bei mir war das mit den support libs der Fehler.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

12.12.2013, 12:01:37 via Website

Laut robolectric soll man den 2.3-SNAPSHOT Build nutzen, habe Ich jetzt mal getan und siehe da:

j
1ava.lang.UnsupportedOperationException: Robolectric does not support API level 9, sorry!
2 at org.robolectric.SdkConfig.<init>(SdkConfig.java:24)
3 at org.robolectric.RobolectricTestRunner.pickSdkVersion(RobolectricTestRunner.java:288)
4 at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.java:264)
5 at org.robolectric.RobolectricTestRunner.access$100(RobolectricTestRunner.java:57)
6 at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:186)
7 at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
8 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
9 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
10 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
11 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
12 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
13 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
14 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
15 at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:172)
16 at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
17 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
18 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
19 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
20 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
21 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
22 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


Ich kann selbst in meinen Test Manifest folgendes Eintragen:

1<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />


Selbst wenn Ich das min auf 19 stelle will er nicht.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.01.2014, 14:46:03 via Website

Nochmal Feedback hierzu: Man muss lediglich das Emulated SDK mittels Annotation setzen:
1@Config(emulateSdk = 18)

Habe das gerade versuchs weise bei einem tests gemacht und er rennt wieder ....

Habe das ganze jetzt komplett sogar unter Gradle am laufen (andere story, man muss weiterhin den 2.3-SNAPSHOT benutzten, da es sonst zu fehlern beim /res folder kommt)

— geändert am 18.01.2014, 14:47:34

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten