Wenn man die Methode getAgeTest()
in AuthorTest zwischen 0:00Uhr und 1:00Uhr ausführt, schägt diese, trotz richtiger Implementierung, fehl.
Dies liegt am zweiten Test, welcher wie folgt aussieht:
Author author2 = new Author("Max", "Mustermann", "Garching-City", "[email protected]", new Date(LocalDate.now().getDayOfMonth(), LocalDate.now().getMonthValue(), LocalDate.now().getYear()));
assertEquals(0, author2.getAge());
Bei diesem Test wird LocalDate.now()
benutzt, um das aktuelle Datum zu bekommen. Allerdings wird dieses Datum anhand der lokalen Zeitzone gebildet (UTC+1). Die Klassen sollen allerdings in UTC +0 getestet werden.
Um das Problem zu beheben, schlage ich vor LocalDate.now()
mit LocalDate.now(ZoneOffset.UTC)
auszutauschen, sodass die Klasse so aussieht:
import java.time.ZoneOffset;
...
public class AuthorTest {
...
Author author2 = new Author("Max", "Mustermann", "Garching-City", "[email protected]", new Date(LocalDate.now(ZoneOffset.UTC).getDayOfMonth(), LocalDate.now(ZoneOffset.UTC).getMonthValue(), LocalDate.now(ZoneOffset.UTC).getYear()));
assertEquals(0, author2.getAge());
...
}
Alternativ könnte auch die Methode today()
von der Klasse Date
benutzt werden:
public class AuthorTest {
...
Author author2 = new Author("Max", "Mustermann", "Garching-City", "[email protected]", new Date(Date.today().getDay(), Date.today().getMonth(), Date.today().getYear()));
assertEquals(0, author2.getAge());
...
}