Właśnie pobrałem Android Studio, które jest oparte na Intellij Idea.
Jak stworzyć testy?
Zauważyłem, że istnieje opcja utworzenia modułu testowego, ale wydaje się, że to nic nie robi, tylko tworzy nowy projekt za pomocą src
Próbowałem także nacisnąć klawisz skrótu CTRL + AlT + T, który pozwala na tworzenie testów jednostkowych na istniejącej klasie, ale wydaje się, że chce umieścić go w bieżącym projekcie. Oczywiście to nie pomaga w TDD
Czy ktoś ma tu jakieś doświadczenie?
android
unit-testing
intellij-idea
android-studio
Jaskółka oknówka
źródło
źródło
Odpowiedzi:
Ta odpowiedź jest dla osób, które dopiero zaczynają testowanie Androida. Podam dwa proste przykłady, które pomogą Ci zobaczyć, jak działa testowanie. Jeśli będziesz śledzić kolejne 10 minut, wszystko będzie gotowe do rozpoczęcia dodawania testów do własnej aplikacji. Myślę, że będziesz zaskoczony, jakie to proste. Z pewnością tak.
Wprowadzenie do testowania Androida
Istnieją dwa różne rodzaje testów, które możesz wykonać.
Context
jest mock ).Utwórz nowy projekt, a zobaczysz następujące domyślne foldery.
Wszystko już jest i czeka, aż stworzysz testy. Wszystko jest już skonfigurowane!
Jak tworzyć lokalne testy jednostkowe
Otwórz
ExampleUnitTest
plik pokazany na powyższym obrazku. powinno wyglądać mniej więcej tak:Naciśnij podwójną zieloną strzałkę, aby uruchomić wszystkie testy, lub pojedynczą zieloną strzałkę, aby uruchomić tylko jeden. (W tym przypadku jest tylko jeden test, więc obaj robią to samo).
Powinien minąć (o ile
2 + 2
nadal4
jest czytany w tej odpowiedzi). Gratulacje, właśnie przeprowadziłeś pierwszy test!Wykonywanie własnego testu
Napiszmy nasz własny test. Najpierw dodaj tę klasę do głównego projektu aplikacji, abyśmy mieli coś do przetestowania:
Teraz zmień
addition_isCorrect()
metodę w klasie testowej tak, aby była podobna do poniższego kodu (lub po prostu dodaj inną metodę o innej nazwie):Uruchom go ponownie i powinieneś zobaczyć, jak minął. Gratulacje, właśnie stworzyłeś swój pierwszy test! (No cóż, technicznie rzecz biorąc, to było moje, ale, hej, wystarczająco blisko. Co moje, jest twoje.)
Jak tworzyć testy instrumentalne
Otwórz
ExampleInstrumentedTest
plik. powinno wyglądać mniej więcej tak:Naciśnij ponownie jeden z tych zielonych przycisków.
Jeśli masz podłączone prawdziwe urządzenie lub skonfigurowany emulator, powinien on je uruchomić i uruchomić aplikację. Gratulacje, właśnie przeprowadziłeś swój pierwszy test instrumentalny!
Wykonywanie własnego testu
Testy instrumentalne wykorzystują espresso do przeprowadzania testów. To trochę jak twój własny mały użytkownik robota, który możesz przetestować swoją aplikację. Możesz powiedzieć mu, aby zrobił coś takiego, jak naciśnięcie przycisku lub odczytanie właściwości TextView.
Możesz napisać instrukcje, jak wykonać test ręcznie, ale ponieważ dopiero zaczynamy, użyjmy funkcji automatycznego nagrywania . To bardzo proste.
Najpierw dodaj przycisk do swojego interfejsu użytkownika, abyśmy mieli nad czym pracować. Ja to zrobiłem:
Następnie w menu naciśnij Uruchom> Nagraj test espresso .
Po uruchomieniu kliknij przycisk w emulatorze, a następnie, aby zakończyć, wybierz OK w oknie dialogowym Nagraj. Powinien automatycznie wygenerować następujący kod testowy.
Wspaniały! Właśnie stworzyłeś swój pierwszy test instrumentalny! To było super łatwe. Prawdopodobnie powinieneś dodać asercję, aby uczynić to prawdziwym testem, ale jest to również łatwe do zrobienia z rejestratorem. Obejrzyj ten film, aby przejść nieco głębiej.
Dalsze badanie
Najpierw obejrzałam filmy, a potem przeczytałam dokumentację. To wszystko jest bardzo pomocne. Ostatni odsyłacz prowadzi do serii artykułów, w których omówiono kilka ważnych kwestii, o których należy pomyśleć przy wyborze elementów do przetestowania.
źródło
/app
pełną ścieżkę od podstawy testu, ale jeśli uruchomię w Android Studio, testy uruchamiają się z root_ , jednak jeśli uruchomię z wiersza poleceń Gradle (lub CI), to jest _root . (Idealnie chciałbym uzyskać dostęp do określonychassets
folderów, gdy są uruchomione w obie strony).test/resources
i umieść tam pliki, np.test.txt
I uzyskaj do nich dostęp za pomocągetClass().getClassLoader().getResource("test.txt")
. Zdecydowałem, że bezpośredni dostęp do zasobów APK jest prawdopodobnie złym pomysłem, więc poradzę sobie z tym, kopiując pliki do przetestowania na etapie kompilacji lub w zewnętrznym procesie aktualizacji. Pozostało jeszcze pewne pytanie dotyczące różnych wersji Gradle, ale jeszcze się z tym nie zmierzyłem.Edycja: Od wersji 0.1.8 jest to teraz obsługiwane w IDE . Postępuj zgodnie z instrukcjami tam, zamiast korzystać z poniższych instrukcji.
Postępując zgodnie z instrukcją użytkownika wtyczki Android Gradle, mogłem uzyskać testy działające w wierszu poleceń, wykonując następujące kroki na nowo utworzonym projekcie (użyłem domyślnego pakietu „com.example.myapplication”):
To uruchomiło moje testy i umieściło wyniki testów w MyApplicationProject / MyApplication / build / reports / instrumentTests / connected. Jestem nowy w testowaniu aplikacji na Androida, ale wygląda na to, że działa dobrze.
Z poziomu IDE można spróbować uruchomić tę samą klasę testową. Musisz
Jednak to się nie powiedzie (w ścieżce klasy używanej podczas uruchamiania testów brakuje katalogu wyjściowego testu). Nie jestem jednak pewien, czy to zadziała niezależnie od tego, ponieważ rozumiem, że wymagany jest program uruchamiający testy dla systemu Android.
źródło
Sugerowałbym użycie pliku gradle.build .
Dodaj katalog src / androidTest / java do testów (tak jak Chris zaczyna wyjaśniać)
Otwórz plik gradle.build i określ tam:
Naciśnij „Synchronizuj projekt z plikiem Gradle” (na górnym panelu). Powinieneś zobaczyć teraz folder „java” (wewnątrz „androidTest”) ma kolor zielony.
Teraz możesz tam tworzyć dowolne pliki testowe i je wykonywać.
źródło
Myślę, że ten post autorstwa Rexa St Johna jest bardzo przydatny do testowania jednostkowego w Android Studio.
(źródło: rexstjohn.com )
źródło
Android Studio v.2.3.3
Podświetl kontekst kodu, który chcesz przetestować, i użyj skrótu:
CTRL
+SHIFT
+T
Skorzystaj z interfejsu dialogowego, aby zakończyć konfigurację.
Struktura testowa powinna odzwierciedlać układ pakietu projektu w celu uzyskania najlepszych wyników, ale możesz ręcznie tworzyć testy niestandardowe, pod warunkiem, że masz poprawny katalog i ustawienia kompilacji.
źródło
Na razie (studio 0.61) wystarczy utrzymanie odpowiedniej struktury projektu. Nie ma potrzeby tworzenia oddzielnego projektu testowego, jak w przypadku zaćmienia (patrz poniżej).
źródło
Android Studio ewoluuje, więc powyższe odpowiedzi ostatecznie przestaną mieć zastosowanie. W przypadku aktualnej wersji Android Studio 1.2.1.1 znajduje się fajny samouczek dotyczący testowania pod adresem:
http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/
źródło
Wydaje się, że jedną z głównych zmian jest to, że w Android Studio aplikacja testowa jest zintegrowana z projektem aplikacji.
Nie jestem pewien, czy to pomoże w Twoim konkretnym problemie, ale znalazłem przewodnik dotyczący tworzenia testów z projektem Gradle. Podręcznik użytkownika Android Gradle
źródło
Najłatwiejszy sposób, jaki znalazłem, jest usprawniony w moim następującym wpisie na blogu :
Powodzenia w uczynieniu Twojego kodu bardziej czytelnym, łatwiejszym w utrzymaniu i dobrze przetestowanym!
źródło
Android Studio było swego rodzaju ruchomym celem, najpierw jako wersja zapoznawcza dla programistów, a teraz w wersji beta. Ścieżka do klas Test w projekcie zmieniła się w czasie, ale niezależnie od używanej wersji AS, ścieżka jest zadeklarowana w pliku .iml. Obecnie w wersji 0.8.3 w wewnętrznym pliku iml znajdziesz następujące informacje:
Plik .iml informuje, gdzie należy umieścić klasy testowe.
źródło
Począwszy od Android Studio 1.1, mamy oficjalną (eksperymentalną) obsługę pisania testów jednostkowych (działa również Roboelectric).
Źródło: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support
źródło
Dodaj poniżej lib wewnątrz pliku gradle
Utwórz klasę HomeActivityTest w katalogu androidTest i przed uruchomieniem testu dodaj ciąg flurry_api_key i sender_id w pliku zasobów ciągu i zmień wartość niepowodzenia i przypadku sukcesu.
źródło