Prosty test JUnit w języku innym niż API w Eclipse z wtyczką android-maven?
Codziennie korzystam z testów JUnit innych niż Android z poziomu Eclipse. Dzisiaj chciałem przetestować niektóre z moich klas biblioteki Android. Och, ból.
Mam projekt biblioteki Android przy użyciu wtyczki android-maven. Mam pliki źródłowe wsrc/main/java
i mój (nowy) test jednostkowy wsrc/test/java
. Mój POM ma odpowiednie zależności JUnit i odniesienia do wtyczki android-maven.
Czasami tworzę AndroidaUri
przykład z aFile
. Czasami mam istniejącą JavęURI
instancja, którą stworzyłem zFile
które następnie konwertuję na aUri
. Ponieważ nie ufam ani Java, ani Androidowi z plikami i URI (nie zaczynaj od tego, jak Java manguje ścieżki UNC w URI lub jak Java łamieequals()
kontrakt w URI), chciałem stworzyć prosty test jednostkowy, aby utworzyć plik tymczasowy, utworzyćUris
z dwóch różnych podejść i upewnij się, że są równe.
Robię więc mały test jednostkowy JUnit, do którego jestem przyzwyczajony, i próbuję uruchomić go w EclipseCtrl+F11
. Eclipse pyta mnie, czy jest to „Android JUnit Test”, czy „JUnit Test”. Cóż, oczywiście Android. Wybieram więc pierwszą opcję i otrzymuję:
[2013-03-23 21:37:10 - mylib] ------------------------------
[2013-03-23 21:37:10 - mylib] Android Launch!
[2013-03-23 21:37:10 - mylib] adb is running normally.
[2013-03-23 21:37:10 - mylib] Could not find mylib.apk!
Hmmm ... to nie było zbyt udane. Więc usuwam konfigurację uruchamiania i próbuję tylko „Test JUnit”. Teraz pojawia się inne okno dialogowe z prośbą o wybranie preferowanego programu uruchamiającego: „Android JUnit Test Launcher” lub „Eclipse JUnit Test Launcher”. Nie ma znaczenia, który wybiorę; Dostaję:
Class not found com.example.MyUnitTest
java.lang.ClassNotFoundException: com.example.MyUnitTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
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)
Czytałem, że dzięki wtyczce android-maven mogę uruchamiać testy jednostkowe lokalnie w Eclipse, jeśli tylko używają klas w słoiku z Androidem, ale nie wykonują żadnych wywołań API, co właśnie robię tutaj. Więc jak to zrobić?