Sensorki – Android i Spock – #7

This entry is part 8 of 10 in the series Sensorki

Nie może być tak, żeby nie było w aplikacji żadnych testów. A przy okazji niczym się tak dobrze nie testuje jak Spockiem. Let’s tests 🙂

Napisałam sobie metodę w klasie Sensor, która sprawdza czy sensorek jeszcze nadaje – sprawdzam czy różnica pomiędzy aktualnym czasem a timestampem sensorka jest mniejsza niż godzina. W praktyce sensorki nadają co pół minuty, ale można wybaczyć małe spóźnienia 😉

public boolean isSensorDead() {
return new Date().getTime() – this.timestamp > 3_600_000;
}
view raw Sensor.java hosted with ❤ by GitHub
isSensorDead?

Procedurę podpięcia Spocka pod aplikację androidową opisywałam w tym wpisie https://paulinakaczmarek.pl/drugi-przetestujmy-cos-spock/. Poza wersjami bibliotek nic się nie zmieniło.

Żeby wykorzystać troszkę możliwości groovy’ego na potrzeby testów musiałam dorzucić do klasy Sensor konstruktor bezargumentowy. Dzięki temu przy tworzeniu obiektu sensorka mogłam podać wartość tylko jednego pola. 

@Use(TimeCategory)
class SensorTest extends Specification {
@Unroll
def "IsSensorDead #testTimestamp"() {
given:
Sensor sensor = new Sensor(timestamp: testTimestamp.getTime())
when:
boolean isSensorDead = sensor.sensorDead
then:
noExceptionThrown()
assert isSensorDead == isExpectedDead
where:
testTimestamp || isExpectedDead
new Date() || false
10.seconds.ago || false
59.minutes.ago || false
61.minutes.ago || true
1.day.ago || true
10.years.ago || true
}
}
SensorTest.groovy

Do tworzenia przyjemnych obiektów czasowych skorzystałam z groovy’owego TimeCategory, który używając DSL-a pozwala intuicyjnie „cofać się w czasie” . Pozwala też podróżować w przyszłość:

1.day.from.now

Pomimo początkowych trudności, w których pomógł mi wpis na japońskim blogu, wszystko ładnie się zgrało i przeszło na zielono 🙂

Ostatnim krokiem było dorzucenie informacji o braku odpowiedzi od  sensorka do UI. Żeby nie przegapić wrzuciłam i do kafelka i do powiadomień. 

Kod do podejrzenia jak zwykle na githubie 😉

Series Navigation<< Sensorki – groovy/spring boot demo serwer – #6Sensorki – podsumowanie – #8 >>

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

This site uses Akismet to reduce spam. Learn how your comment data is processed.