Piszę Android Library Project w oparciu o klasę Android Bitmap (nazwijmy ją AndroindLib), która zawiera tylko klasę narzędziową (brak aktywności). Próbowałem to przetestować za pomocą Androida JUnit, ale ciągle narzeka, że nie mogę znaleźć AnroidLib.apk
Jaki jest właściwy sposób testowania jednostkowego Android Library Project?
Odpowiedzi:
Cytując dokumentację :
„Istnieją dwa zalecane sposoby konfigurowania testowania kodu i zasobów w projekcie biblioteki:
Możesz skonfigurować projekt testowy, który instrumentuje projekt aplikacji zależny od projektu biblioteki. Następnie możesz dodać testy do projektu dla funkcji specyficznych dla biblioteki.
Można skonfigurować standardowy projekt aplikacji, który zależy od biblioteki i umieścić instrumentację w tym projekcie. Pozwala to na utworzenie samodzielnego projektu zawierającego zarówno testy / instrumenty, jak i kod do przetestowania ”.
źródło
W projekcie testowym po prostu zmień nazwę pakietu, tak aby była taka sama, jak pakiet biblioteki. Na przykład masz bibliotekę, której pakiet to
"com.example.lib"
. Utwórz projekt testowy przeznaczony dla Twojej biblioteki. W pliku manifestu zobaczyszpackage="com.example.lib.test"
itargetPackage="com.example.lib"
. Po prostu zmień pakiet z „com.example.lib.test” na „com.example.lib” (targetPackage
pozostaw taki, jaki jest).Upewnij się również, że biblioteka odwołuje się do twojego projektu testowego NIE w ścieżce kompilacji Java, ale jako zwykła biblioteka Androida: w Eclipse musi być pokazana jako biblioteka na
Project->Properties->Android
karcie, ale nie naProject->Properties->Java Build Path
karcie.Następnie przeprowadź testy.
źródło
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/ pomaga opisać proces potrzebny do wdrożenia drugiej sugestii w odpowiedzi CommonsWare
źródło
Zgodnie z dokumentacją :
Testowanie modułu biblioteki jest tym samym, co testowanie aplikacji. Główna różnica polega na tym, że biblioteka i jej zależności są automatycznie uwzględniane jako zależności testowego APK. Oznacza to, że testowy plik APK zawiera nie tylko własny kod, ale także AAR biblioteki i wszystkie jego zależności. Ponieważ nie ma oddzielnej „testowanej aplikacji”, zadanie androidTest instaluje (i odinstalowuje) tylko testowy pakiet APK. Podczas scalania wielu plików manifestu Gradle stosuje domyślną kolejność priorytetów i scala manifest biblioteki z głównym manifestem testowego APK.
źródło
UWAGA: To rozwiązanie opiera się na użyciu Eclipse Indigo (3.8.2) i może wymagać implementacji nieco inaczej dla innego IDE, chociaż podstawowe zasady będą takie same.
Miałem podobne problemy i stwierdziłem, że zawsze działa:
( UWAGA: te instrukcje dotyczą tworzenia nowej grupy projektów od podstaw. Jeśli już zbudowałeś części grupy projektów, może być konieczne zmodyfikowanie projektów, aby łączyć się w ten sam sposób ).
Powinieneś skończyć z trzema projektami (Android Library, Android Test App, Android Library Tester), które wyglądają podobnie do tego:
Powinieneś otrzymać klasę do testowania biblioteki Androida, która wygląda podobnie do tego:
Następnie możesz dodać dowolny test, który chcesz. Nie będzie konieczne dalsze odwoływanie się do aplikacji Android Test (w tym przykładzie „RemingtonAndroidToolsTestApp”), aby uruchomić testy, chyba że będą one wymagały dostępu do określonego składnika systemu Android (na przykład do folderu Assets). Jeśli potrzebujesz uzyskać dostęp do jakichkolwiek komponentów specyficznych dla Androida, możesz to zrobić, modyfikując aplikację Android Test App (w tym przykładzie „RemingtonAndroidToolsTestApp”), a następnie odwołując się do niej za pomocą oprzyrządowania udostępnionego przez standardowy interfejs Android Junit API. (Możesz przeczytać więcej na ten temat tutaj: http://developer.android.com/tools/testing/testing_android.html )
źródło
Jeśli Twoje klasy ulitiy nie zależą od żadnego specyficznego dla Androida kodu, możesz po prostu użyć standardowych testów jednostkowych JUnit. Nie ma potrzeby korzystania z wersji Androida.
źródło