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
+94Lines changed: 94 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,100 @@ Podstawą procesu testowania jest tworzenie i wykonywanie testów jednostkowych,
24
24
## Dobre praktyki
25
25
Tworząc metody testowe należy przede wszystkim pamiętać o wykluczeniu wszelkich zależności w taki sposób, aby na wynik testu testowanej jednostki nie miały wpływu inne zależności. Klasy testowe powinny znajdować się w pakiecie o tej samej nazwie co klasy implementacji, a nazwy klas testowych powinny być podobne do klas testowanych. Metody opisowe powinny być nazywane w sposób opisowy i jednoznaczny w nawiązaniu do celu testu nawet jeśli z tego powodu nazwa metody jest długa. W tym celu można posłużyć się konwencją `Given/When/Then`, gdzie `Given` określa warunki początkowe, `When` opisuje akcje, a `Then` informuje o oczekiwanym rezultacie. Ponadto należy dążyć do minimalizacji asercji, czasu wykonywania testów oraz zwiększać pokrycie kodu. Testy powinny być krótkie, proste i ściśle dotyczyć jednej jednostki. Jeśli sytuacja tego wymaga należy wykorzystywać metody cyklu życia testów, aby zapewnić odpowiednią inicjalizację i czyszczenie środowiska.
26
26
27
+
>**Przykład**
28
+
>Klasa `Game` zarządza rozgrywką w grze komputerowej w której dwie przeciwne drużyny walczą o zwycięstwo zdobywając bramki. W odniesieniu do implementacji klasy `Game` zostaną przeprowadzone testy przedstawiające dobre praktyki oraz charakterystykę testów jednostkowych `JUnit4` dla Android.
29
+
30
+
{% highlight kotlin %}
31
+
class Game {
32
+
33
+
private val redTeam = mutableListOf<String>()
34
+
private val blueTeam = mutableListOf<String>()
35
+
private var redGoals = 0
36
+
private var blueGoals = 0
37
+
private var gameStarted = false
38
+
39
+
fun start() {
40
+
if(!gameStarted && teamsSizesEquals()) {
41
+
gameStarted = true
42
+
redGoals = 0
43
+
blueGoals = 0
44
+
//do and allow for some actions
45
+
}
46
+
}
47
+
48
+
fun stop() {
49
+
if(gameStarted) {
50
+
gameStarted = false
51
+
//do some other actions
52
+
}
53
+
}
54
+
55
+
fun clearTeams() {
56
+
redTeam.clear()
57
+
blueTeam.clear()
58
+
}
59
+
60
+
fun addPlayer(team: Team, player: String): Boolean {
Testy w JUnit (metody) zawierają się w `klasie testowej`, które z kolei mogą być częścią `zestawu klas testowych`. Aby klasa była klasą testową w JUnit4 musi zawierać deklarację przynajmniej jednej metody testowej oznaczonej adnotacją `@Test`. Podstawowym elementem testów są asercje sprawdzające wartość logiczną, równość wartości czy referencji.
0 commit comments