¿Prueba simple de Android JUnit sin API en Eclipse con android-maven-plugin?

Realizo pruebas de JUnit que no son de Android desde Eclipse todos los días. Hoy quise probar algunas de mis clases de biblioteca de Android. Oh, el dolor.

Tengo un proyecto de biblioteca de Android que utiliza android-maven-plugin. Tengo archivos fuente ensrc/main/java y mi (nueva) prueba de unidad ensrc/test/java. Mi POM tiene las dependencias de JUnit adecuadas y las referencias de android-maven-plugin.

A veces creo un AndroidUri instancia de unFile. A veces tengo un Java existenteURI instancia que he creado a partir de unaFile que luego convierto a unaUri. Ya que no confío en ni en Java ni en Android con archivos y URI (no me refiera a cómo Java maneja las rutas UNC en URI, o cómo Java rompe elequals() contrato en URI), quería crear una prueba unitaria simple para crear un archivo temporal, crearUris desde dos enfoques diferentes, y asegúrese de que salgan iguales.

Así que hago una pequeña prueba de unidad JUnit como estoy acostumbrado, y trato de ejecutarlo en Eclipse usandoCtrl+F11. Eclipse me pregunta si se trata de una "Prueba de Android" o "Prueba de JUnit". Bueno, Android, obviamente. Entonces elijo la primera opción y obtengo:

[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 ... eso no fue muy exitoso. Así que borro la configuración de ejecución e intento solo "Prueba de JUnit". Ahora aparece un cuadro de diálogo diferente, que me pide que seleccione mi iniciador preferido, ya sea "Android JUnit Test Launcher" o "Eclipse JUnit Test Launcher". No importa cuál elijo; Yo obtengo:

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)

He leído que con el plugin android-maven puedo ejecutar pruebas unitarias localmente en Eclipse si solo usan clases en el jar de Android pero no hacen ninguna llamada a la API, que es lo que estoy haciendo aquí. Entonces, ¿cómo puedo lograr eso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta