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ć?

questionAnswers(3)

yourAnswerToTheQuestion