Uderzam głową w ścianę, próbując dowiedzieć się, dlaczego IntelliJ / Android zgłasza „Pusty zestaw testów”. Mam mały projekt z dwoma modułami IntelliJ („Projekty” w Eclipse). Moduł testów jednostkowych ma swój własny plik AndroidManifest.xml, który wkleiłem na dole. Próbuję uruchomić ActivityUnitTestCase
, ponieważ testy będą zależne od Context
-obiektu.
Nazwa pakietu głównego modułu to nilzor.myapp
. Nazwa pakietu modułu testowego tonilzor.myapp.tests
Dlaczego testBlah()
uruchamiający testy nie wykrywa metody -metody jako testu?
<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nilzor.myapp.tests"
android:versionCode="1"
android:versionName="1.0">
<!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library,
which is needed when building test cases. -->
<application>
<uses-library android:name="android.test.runner"/>
</application>
<!--
This declares that this application uses the instrumentation test runner targeting
the package of nilzor.myapp. To run the tests use the command:
"adb shell am instrument -w nilzor.myapp.tests/android.test.InstrumentationTestRunner"
-->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="nilzor.myapp"
android:label="Tests for nilzor.myapp"/>
</manifest>
A oto moja klasa testowa :;
package nilzor.myapp.tests;
public class NilzorSomeTest<T extends Activity> extends ActivityUnitTestCase<T>{
public NilzorSomeTest(Class<T> activityClass){
super(activityClass);
}
@SmallTest
public void testBlah(){
assertEquals(1,1);
}
}
Znam podstawy badań , na aktywność testowania dokumentu i próbowała po tym Witam testowym blogu świat , mimo że jest dla Eclipse. Nie mogę zmusić biegacza testów do znalezienia i uruchomienia mojego testu. Co ja robię źle?
Niektóre z pytań, których nadal nie jestem pewien, to:
- Czy potrzebuję adnotacji powyżej metody testu jednostkowego?
- Czy muszę poprzedzać metodę ciągiem „test”, czy jest to tylko dla testów JUnit?
- Czy mogę mieć testy w pod-pakietach
nilzor.myapp.tests
?
Ale główne pytanie tego posta brzmi: dlaczego tester nie wykrywa mojego testu ?
źródło
cmd+shift+t
skrót, który automatycznie utworzy klasę testową w poprawnej lokalizacji pakietu, która odpowiada klasie, którą aktualnie edytujesz.@Test
znacznika na górze testu.Odpowiedzi:
Musisz podać domyślny konstruktor dla swojej klasy testowej, na przykład:
o innych pytaniach:
Nie. Moje testy nadal działają bez adnotacji, ale myślę, że warto je mieć. Pozwala określić rozmiar testów do uruchomienia. Zobacz, jaki jest cel adnotacji @SmallTest, @MediumTest i @LargeTest w systemie Android? aby uzyskać więcej szczegółów.
Tak, potrzebujesz prefiksu „test”. InteliJ daje ostrzeżenie „metoda nigdy nie używana”, gdy nie ma przedrostka „test” i pomija tę metodę podczas wykonywania testu.
Tak. Moje testy są podzielone na podpakiety i wygląda na to, że działają dobrze.
źródło
Jeśli dzieje się to „nagle” lub „działało 5 minut temu”, moim rozwiązaniem było przejście do konfiguracji uruchamiania / debugowania i usunięcie wszelkich konfiguracji w sekcji „Testy Androida”. Czasami te konfiguracje ulegają uszkodzeniu, jeśli dokonam refaktoryzacji testowanej klasy (na przykład przenosząc się do nowego pakietu).
źródło
Create 'Tests in XXX...
- potem znów zadziałałoŻadne z powyższych nie naprawiało tego dla mnie. Pomogło przestrzeganie instrukcji :
źródło
Miałem podobny problem. Nie wiem, dlaczego tak się dzieje, ale udało mi się to naprawić, przechodząc do: „Plik”> „Unieważnij pamięć podręczną / Uruchom ponownie” w Android Studio.
źródło
Nie wiem, czy to pomaga w Android Studio, ale miałem jakiś konflikt Intellij-Gradle. Rozwiązano to przez „kliknięcie prawym przyciskiem myszy” na pliku testowym i naciśnięcie „kompiluj plik ... Test.java”. Potem mogłem ponownie przeprowadzić pojedyncze testy.
źródło
Miałem ten sam problem na Android Studio 2.3.1, okazuje się, że to tylko błąd z AS. Uruchomienie tego samego testu w wersji 2.2.1 działa dobrze.
Jeśli używasz tylko Android Studio na kanale Cannary, polecam również zainstalowanie stabilnej wersji. http://tools.android.com/tips/using-multiple-android-studio-versions
źródło
Miałem testy, które działały dobrze, dopóki
gradle
Android Studio nie zostało zaktualizowane.Oprócz dodania domyślnego konstruktora do testów, może być konieczne wykonanie niektórych z tych czynności, aby zestaw testów działał
W trakcie
src/
tworzeniaandroidTest/java/<your-package-name>/test
. Zwróć uwagę naandroidTest
. Cokolwiek innego, w tyminstrumentTest
nie będzie działać.Dodaj to do
build.gradle
Dodaj to do
AndroidManifest.xml
źródło
W przypadku Intellij 15 rozwiązałem ten problem przez:
a. Kliknij prawym przyciskiem myszy katalog źródłowy (zwykle src) i kliknij „Źródło”.
b. Kliknij prawym przyciskiem myszy katalog testów i kliknij „Testuj”
. C. Kliknij prawym przyciskiem myszy katalog wyjściowy i kliknij „Wykluczone”
a. Kliknij przycisk opcji „Użyj ścieżki wyjściowej kompilacji modułu”
. B. Wybierz katalog ścieżki wyjściowej dla `` Ścieżki wyjściowej ''
. C. Wybierz katalog ścieżki testowej dla opcji „Ścieżka wyjściowa testu”
źródło
Oczywiście do uruchomienia testów potrzebne jest urządzenie docelowe, ponieważ są to testy instrumentalne. Z pewnych powodów Android studio czasami nie prosi o wskazanie tego urządzenia docelowego i po prostu wyświetla komunikat „Opróżnij pakiet testowy”. Można to naprawić na różne sposoby. Oto kilka:
uruchom swoją główną aplikację i wybierz urządzenie docelowe lub
przejdź do konfiguracji Uruchom (Uruchom / Uruchom ... / Edytuj konfiguracje) i zmodyfikuj opcje celu wdrożenia
źródło
W moim przypadku żadna z poprzednich odpowiedzi nie zadziałała. Rozwiązaniem było po prostu przeniesienie klasy testowej do innego pakietu .
Stało się to pod
androidTest/
źródło
W moim przypadku ten problem był spowodowany błędem w moim kodzie, w rzeczywistości to było w klasie aplikacji, więc działanie docelowe nie zostało otwarte i testowe wydruki wyjściowe
Próbowałem uruchomić testy bezpośrednio z terminala z
adb shell am instrument -w -r -e package your.package -e debug false android.support.test.runner.AndroidJUnitRunner
. Dzięki temu drukuje dla Ciebie znacznie więcej o wyjątku.źródło
Miałem ten problem, ponieważ miałem to w moim build.gradle:
Mimo że nie korzystałem z narzędzia Android Test Orchestrator (musiał przez pomyłkę skopiować samouczki).
Komentowanie tego rozwiązało problem.
źródło
Żadne z innych rozwiązań nie działało dla mnie, ale udało mi się to uzyskać, po prostu odinstalowując istniejącą aplikację lub zestaw testów, a następnie uruchamiając testy.
źródło
W moim przypadku projekt, nad którym pracowałem, miał kilka modułów. Żadne z rozwiązań, które znalazłem dla tego błędu, nie pomogło mi, a potem jakoś zdałem sobie sprawę, że jeśli dodam zależności testowe w OBU plikach build.gradle, testy magicznie zaczęły działać. Nie ma znaczenia, czy twoje testy znajdują się tylko w jednym module, oba pliki gradle muszą zawierać zależności i wartość testInstrumentationRunner.
Tak więc, jeśli tak jak ja, żadna z pozostałych odpowiedzi ci nie pomogła, spróbuj dodać te wiersze do pliku build.gradle każdego z modułów:
a następnie dodaj:
źródło
Właśnie zmieniłem nazwę pliku i problem został rozwiązany.
źródło
Miałem ten sam problem, a powodem było to, że moja klasa testowa nie miała Test na końcu nazwy klasy!
źródło
Mój problem został spowodowany zgłoszeniem wyjątku w
@BeforeClass
metodzie mojego przypadku testowego. W pewnym sensie nie powodowało to niepowodzenia testu - znalazłem to tylko przez sprawdzenie wyjścia logcat.Naprawiłem wyjątek i nagle moje testy zaczęły działać!
źródło
Po dzisiejszym rozwiązaniu problemu - braku możliwości uruchomienia zinstrumentowanych testów Androida z błędem Empty suite - znalazłem problem z gitem dotyczący tego problemu i dzięki Stephanowi Linznerowi mogłem przeprowadzić testy.
tl; dr Musisz kliknąć prawym przyciskiem myszy pakiet testowy, a nie klasę, aby uruchomić testy.
Źródła: https://github.com/googlecodelabs/android-testing/issues/27#issuecomment-219074863
źródło
Ten artykuł mi pomógł: Pusty zestaw testów
Zasadniczo musiałem stworzyć pakiet - instrumentTest / java - w moim katalogu src i umieścić tam wszystkie testy. Wtedy mogłem wykonać te testy indywidualnie.
źródło
Miałem surowy projekt Java, w którym to się działo. Po prostu Java + JUnit4. Z pewnością znajduje się w czymś w twoich plikach .idea / lub .iml. Wyrzuciłem swoją, ponownie zaimportowałem i wreszcie testy zostały ponownie uruchomione.
źródło
Klasa testowa może zostać wyłączona z kompilacji. Napraw to w setting-compiler-exclude.
źródło
Oto moje kroki debugowania, przez które przechodzę, gdy Android Studio nagle decyduje się przestać uruchamiać / debugować testy (i chłopcze zdarza się to żenująco często !!):
Dodam więcej poprawek, gdy je napotkam!
źródło
Nic nie zrobiłem i problem zniknął po pół dnia bólu, wielokrotnie otwierałem i zamykałem projekty, przeprowadzałem testy każdej klasy ręcznie, może to naprawiło.
źródło
W Android Studio z frameworkiem Spock zmieniłem wersję mojego gradle z 2.2.2 na 3.2.1 i wszystko idzie dobrze.
źródło
Zaakceptowana odpowiedź nie rozwiązała mojego problemu. Postanowiłem więc skopiować,
ExampleInstrumentedTest
który jest domyślnie tworzony w Android Studio i działa bez żadnych problemów, zmieniłem jego nazwę podczas procesu kopiowania (brak Refactor-> Zmień nazwę po skopiowaniu!) I wkleiłem do niego zawartość mojego testu jednostkowego. Po tym błąd zniknął.źródło
Wystąpił błąd „Pusty zestaw testów” podczas próby uruchomienia lokalnych testów jednostkowych w moim projekcie Android Studio 3.0.
Po przeczytaniu dokumentacji programisty Androida szybko zdałem sobie sprawę, że problem był spowodowany przez moją konfigurację gradle, która zawierała następujące wiersze.
Klasa AndroidJUnitRunner to narzędzie do uruchamiania testów JUnit, które umożliwia uruchamianie klas testowych w stylu JUnit 3 lub JUnit 4 na urządzeniach z systemem Android .
Ponieważ moje testy były lokalne, a zatem nie wymagały uruchamiania na żadnym urządzeniu, usunięcie powyższych wpisów com.android.support.test ... umożliwiło mi wykonanie testów jednostkowych.
źródło
Robiłem kilka wstawek w bazie danych w metodzie @BeforeClass. Uświadomiłem sobie, że mam problem z mapowaniem obiektu / bazy danych. Ten problem z mapowaniem danych był dla mnie przyczyną tego problemu.
źródło
W moim przypadku przeprowadziłem testy z oprzyrządowaniem
androidTest/java/<package.name>/MyTestingClass
, ale ustawiłem obecny wariant kompilacji na „przedprodukcję”. I o to chodzi! Jak określono w dokumentacji Android Studio :Wiadomość
Class not found. Empty test suite.
pojawiała się, dopóki nie zrobiłem tego:Dodaj tę linię do mojego build.gradle :
Następnie ponownie wykonałem testy i tym razem działają idealnie !!!
źródło
Przydarzyło mi się to, gdy omyłkowo oznaczyłem adnotacją inną niż pozorowana zmienna klasy.
@Mock
Usunięto adnotację i testy przebiegły pomyślnie. Stało się to w przypadku Junit 4.5 w Android Studioźródło
Nie jest to rozwiązanie, ale obejście, które szybko przywróci Cię na właściwe tory:
Po pierwsze, znajdź test, który działa. Pisałem nowy test, w którym wystąpił błąd „pusty zestaw testów”. Przeprowadziłem inne testy i działały jak zwykle.
Skopiuj plik testowy, który działa. Uruchom go, aby upewnić się, że ta kopia działa jak oryginał.
Usuń korpus i zastąp go nowym kodem testu.
Test powinien teraz działać.
Spędziliśmy około dwóch godzin, próbując znaleźć przyczynę, ale bezskutecznie.
źródło