You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fun checkMainActivityHasWorkingFinishLifecycle() {
165
+
//this activity goes throw all create lifecycle
166
+
val controller = Robolectric.buildActivity(MainActivity::class.java)
167
+
val activity = controller.create().start().resume().visible().get()
168
+
//equivalent of val activity = Robolectric.setupActivity(MainActivity::class.java)
169
+
//visible methods assures that activity view's is attached
170
+
171
+
assertFalse(activity.isFinishing)
172
+
activity.finish()
173
+
assertTrue(activity.isFinishing)
174
+
}
175
+
176
176
@Test
177
177
fun checkMainActivityHasWorkingRestoringState() {
178
178
val savedInstanceState = Bundle()
@@ -220,4 +220,48 @@ class SomeService : Service() {
220
220
{% endhighlight %}
221
221
222
222
## Shadow
223
-
//TODO
223
+
Robolectric tworzy środowisko wykonawcze zawierające prawdziwy kod Android SDK co zwiększa realizm testów tak jakby były przeprowadzane na fizycznym urządzeniu. Wszystkie klasy Android są zastąpione tzw. `obiektami cienia` (`Shadows`). Każdy obiekt cienia może modyfikować lub rozszerzać zachowanie odpowiadającej mu klasy z Android SDK. Aby stworzyć klasę `Shadow` należy oznaczyć ją adnotacją `@Implements` wraz z nazwą odpowiadającej klasy Android, opcjonalnie rozszerzyć superklasę Shadow oraz dostarczyć publiczny bez argumentowy konstruktor. Metody rozszerzene muszą mieć adnotację `@Implementation` (obiekt cienia implementuje metody z tą samą sygnaturą dla odpowiadającej klasy Android niezależnie od modyfikatora dostępu) i przeważnie modyfikator `protected`. Metoda `directlyOn` pozwala na wywołanie akcji na faktycznym obiekcie.
Klasa testowa lub metoda wykorzystująca własną implementacje klas Shadows musi być oznaczona adnotacją `@Config(shadows=arrayOf(CustomShadowClass::class))` (lub zawierać odpowiedni wpis w pliku ustawień) co umożliwia rozpoznanie i skojarzenie klas Shadow z klasami przykrywanymi. Metoda `shadowOf` jest przeznaczona dla dostarczonych przez Robolectric klas Shadow, natomiast `extract` dla autorskich klas Shadow.
0 commit comments