Moje testy jednostkowe kończą się niepowodzeniem z metodą d w pliku android.util.Log nie kpisz, ale tylko wtedy, gdy uruchomię testDebug. Jeśli działa testRelease, wszystko jest w porządku i poprawnie przekazuje. Czy ktoś wie, dlaczego tak się dzieje? To samo dzieje się podczas pracy z konsolą i systemem Android.Testy jednostek Androida kończące się niepowodzeniem w przypadku typu debugowania:
Odpowiedz
Oto wyjaśnienie, w jaki sposób rozwiązałem ten problem, aby można go było wykorzystać w przyszłości. Problem z testami działającymi w trybie debugowania, ale nie wydaniem, wynikał z faktu, że Log.d (i znajomi z frameworka androida) nie byli prawidłowo wyśmiewani. Powodem, dla którego działa po zbudowaniu w wersji, jest to, że nasze logowanie było warunkowe w oparciu o tę właściwość z kompilacji konfiguracji. Zasadniczo mamy, jeśli (BuildConfig.type! = "Release") Log.d (...) i ponieważ kompilator usuwa ten blok ze względu na ostateczną wartość, nie jest wywoływany podczas testowania wydania. Wyśmiewanie metody statycznej Log.d Użyłem PowerMocka. Kpiny były łatwe, ale skonfigurowanie Power Mock naprawdę przysporzyło kłopotów, więc prawdopodobnie istnieją lepsze sposoby na zrobienie tego.
Zamówienie na stronie "Method ... not mocked" łącze do witryny projektu Android Studio. Mówi:
Plik android.jar który służy do uruchamiania testów jednostkowych nie zawiera żadnych rzeczywisty kod - to jest dostarczane przez system Android obrazu na rzeczywistych urządzeniach. Zamiast tego wszystkie metody generują wyjątki (domyślnie). Ma to na celu upewnienie się, że twoje jednostki testują tylko test twojego kodu i nie zależą od żadnego konkretnego zachowania platformy Android (który nie jawnie wyśmiewałeś, np. Używając Mockito). Jeśli to okaże się problematyczne, można dodać fragment poniżej do build.gradle zmienić to zachowanie:
build.gradle
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
Jesteśmy świadomi, że domyślne zachowanie jest problematyczne przy użyciu klasy jak Zaloguj lub textutils i będzie oceń możliwe rozwiązania w przyszłych wydaniach.
Właśnie użyłem powyższych, aby pozbyć się wyjątku na razie.
- 1. Testy CakePHP i SimpleTest kończące się niepowodzeniem z czystej instalacji
- 2. Testy jednostek Robolectric kończą się niepowodzeniem po Multidex
- 3. Testy Androida kończą się niepowodzeniem na Travis z ShellCommandUnresponsiveException
- 4. Wszystkie zadania kończące się niepowodzeniem w wykonaniu C COMPS
- 5. Testy WATIN kończące się niepowodzeniem z TimeoutException po uruchomieniu z CruiseControl
- 6. Testowanie jednostek w VS2010 - "Debugowanie" przebiega, "Uruchom" kończy się niepowodzeniem
- 7. Testy jednostek debugowania, które zawiodły z powodu wyjątku StackOverflow
- 8. NavUtils.shouldUpRecreateTask kończy się niepowodzeniem w przypadku JellyBean
- 9. Testy jednostek debugowania uruchamiane na linii cmd za pomocą Eclipse
- 10. metody Scala kończące się _ =
- 11. Ulepszanie kompilacji systemu Android jenkins, jeśli testy zakończą się niepowodzeniem
- 12. Testy jednostkowe przechodzące przez Mavena, ale kończące się niepowodzeniem przez Coberturę: "Oczekiwanie ramki stosu ramek w docelowej gałęzi 65"
- 13. Dlaczego rozwiązywanie problemu kończy się niepowodzeniem w przypadku wystąpienia decltype?
- 14. Testy jednostek Resharper nie działają
- 15. Dlaczego migracja bazy danych kończy się niepowodzeniem w przypadku typów danych typu blob w szynach?
- 16. Convert.ChangeType() kończy się niepowodzeniem w przypadku typów Nullable
- 17. Gra kojarzeń GameKit kończy się niepowodzeniem w przypadku połączeń 3G
- 18. ColdFusion IsImageFile kończy się niepowodzeniem w przypadku pliku jpg
- 19. FileUtils.copyFile kończy się niepowodzeniem w przypadku dużych plików
- 20. Uruchom testy jednostek jednostkowych i testy instrumentalne na Jenkins (Gradle)
- 21. Jak utworzyć testy jednostek, które działają tylko w przypadku ręcznego określenia?
- 22. Ukryj testy jednostek z Hierarchy wywołań
- 23. Testy jednostek Silverlight 5 VS 2012
- 24. Uruchamiaj testy jednostek na kontrolerach wymagających uwierzytelniania.
- 25. Podczas uruchamiania programu mstest w stosunku do usługi WCF, WcfSvcHost nie uruchamia się, a testy kończą się niepowodzeniem. Testy przekazane podczas debugowania
- 26. Testy jednostek pisania dla kodu C
- 27. Testy jednostek sterujących AngularJS - usługi iniekcyjne
- 28. Xcode/iOS: testy jednostek, schematy i konfiguracje
- 29. Testy jednostek Ember-cli z potrzebami relacji
- 30. Testy Androida bez emulatora