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
Copy file name to clipboardExpand all lines: _drafts/2019-01-14-junit.md
+80-2Lines changed: 80 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -315,7 +315,85 @@ class PrintTestRule : TestRule {
315
315
316
316
`AndroidX Test` zawiera zestaw gotowych zasad dla JUnit, które zwiększają elastyczność, redukują powtarzający się kod oraz wspomagają testowanie komponentów Android. Wykorzystywane są przede wszystkim testach UI przy użyciu `Espresso`. `ActivityTestRule` dostarcza do klasy testowej żądanej Aktywności (`Activity`), która jest dostępna w całym cyklu życia klasy testowej, `ServiceTestRule` dostarcza Usługę (`Service`) natomiast `IntentsTestRule` dostarcza Intencję (`Intent`).
317
317
318
-
//TODO maybe
318
+
>**Przykład**
319
+
>Aktywność `GameActivity` umożliwia użytkownikowi prowadzenie rozgrywki opierając się na klasie `Game` co może wprowadzać potrzebę przetestowania klasy `Game` z poziomu aplikacji. W tym celu należy stworzyć testy instrumentalne (w pakieckie `androidTest`) wykonywane przez `AndroidJUnit4` i wykorzystać `ActivityTestRule` (lub bibliotekę `Robolectric`).
320
+
321
+
{% highlight kotlin %}
322
+
@RunWith(AndroidJUnit4::class)
323
+
class InstrumentedTest {
324
+
325
+
@Rule @JvmField
326
+
val activityRule = ActivityTestRule(GameActivity::class.java)
327
+
328
+
//use only context
329
+
@Test
330
+
fun checkStringResourceFromContext() {
331
+
val appContext = InstrumentationRegistry.getTargetContext()
override fun onCreate(savedInstanceState: Bundle?) {
351
+
super.onCreate(savedInstanceState)
352
+
setContentView(R.layout.activity_main)
353
+
//init view
354
+
}
355
+
356
+
//imit real actions flow in one function
357
+
fun startGame() {
358
+
game.start()
359
+
}
360
+
361
+
fun stopGame() {
362
+
game.stop()
363
+
}
364
+
365
+
fun initDefaultGame() {
366
+
game.addPlayer(Game.Team.RED, "Johnnie")
367
+
game.addPlayer(Game.Team.RED, "William")
368
+
game.addPlayer(Game.Team.BLUE, "Jack")
369
+
game.addPlayer(Game.Team.BLUE, "Jim")
370
+
}
371
+
372
+
fun isGameRunning(): Boolean {
373
+
return game.hasStarted()
374
+
}
375
+
}
376
+
{% endhighlight %}
319
377
320
378
## Filtry
321
-
`AndroidJUnitRunner` umożliwia stosowanie adnotacji dla testów instrumentalnych w celach informacyjnych. Adnotacja `@RequiresDevice` mówi, że test powinien zostać przeprowadzony tylko na urządzeniu fizycznym, `@SdkSupress` określa minimalne API natomiast `@SmallTest`, `@MediumTest` i `@LargeTest` informują o wielkości testu co przekłada się na czas jego wykonania.
379
+
`AndroidJUnitRunner` umożliwia stosowanie adnotacji dla testów instrumentalnych w celach restrykcyjnych. Adnotacja `@RequiresDevice` mówi, że test powinien zostać przeprowadzony tylko na urządzeniu fizycznym, `@SdkSupress` określa minimalne API natomiast `@SmallTest`, `@MediumTest` i `@LargeTest` informują o wielkości testu co przekłada się na czas jego wykonania.
0 commit comments