2015-09-18 11 views

Odpowiedz

1

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.

0

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.

Powiązane problemy