Простой не-API Android-тест JUnit в Eclipse с android-maven-plugin?
Я запускаю не-Android JUnit-тесты из Eclipse каждый день. Сегодня я хотел протестировать некоторые из моих классов библиотеки Android. Ох, боль.
У меня есть проект библиотеки Android с использованием Android-Maven-плагин. У меня есть исходные файлы вsrc/main/java
и мой (новый) модульный тест вsrc/test/java
, У моего POM есть соответствующие зависимости JUnit и ссылки на android-maven-plugin.
Иногда я создаю AndroidUri
экземпляр изFile
, Иногда у меня есть существующая JavaURI
пример того, что ямы создали изFile
который я затем преобразовать вUri
, Так как я не доверяю ни Java, ни Android с файлами и URI (нея не могу начать с того, как Java искажает UNC-пути в URI, или как Java ломаетequals()
контракт в URI), я хотел создать простой модульный тест для создания временного файла, создатьUris
от двух разных подходов, и убедитесь, что они выходят равными.
Так что я делаю небольшой юнит-тест JUnit, как ям, и попробуйте запустить его в Eclipse, используяCtrl+F11
, Затмение спрашивает меня, если этоAndroid JUnit Test » или "Юнит Тест ", Ну, Android, очевидно. Поэтому я выбираю первый вариант и получаю:
[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!
Хм ... это не былот очень успешный. Поэтому я удаляю конфигурацию запуска и пытаюсь простоЮнит Тест ", Теперь я получаю другое диалоговое окно с просьбой выбрать предпочитаемую программу запуска "Android JUnit Test Launcher " или же "Eclipse JUnit Test Launcher ", Это неневажно, что я выберу; Я получаю: я
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)
Я читал, что с помощью плагина android-maven-plugin я могу запускать модульные тесты локально в Eclipse, если они просто используют классы в банке Android, но нея не делаю никаких вызовов API, что я и делаюя здесь делаю Так как мне это осуществить?