LocalDateTime testen mit Junit

JavaExpInc

Mitglied
Hallo zusammen,

ich weiß momentan leider nicht wie ich mein LocalDateTime testen kann.
Momentan sieht meine Klasse so aus.

Code:
public class testclass(){
public testclass(){
this.setCreationDate();
}

    public LocalDateTime getCreationDate() {
        return creationDate;
    }
    public void setCreationDate() {
        this.creationDate = LocalDateTime.now();
    }
}

Momentan bekomme ich die Fehlermeldung, das ich die beiden CreationDates die ich vergleiche nicht gleich sind (um ein paar Millisekunden). Weil das eine etwas später erstellt wird als das andere. Nur wie teste ich so etwas?
 

JavaExpInc

Mitglied
Hab es gerade mal auf dieses hier umgeändert:

Code:
public class testClass{
 public testClass(){
 setCreationDate(LocalDateTime.now());
}
    public LocalDateTime getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(LocalDateTime date) {
        this.creationDate = LocalDateTime.now();
    }
}

Nun funktioniert mein Test. Macht man es generell eher so? Habe gedacht die SetMethode müsste nun anders aussehen da ich sonst später ja von meiner Klasse das Datum abändern kann wobei man das erstellungsdatum ja nicht abändern sollen könnte.
 

mrBrown

Super-Moderator
Mitarbeiter
Das ist doch nicht mal gültiger Java-Code?
Das sind auch nur ein (falscher) Setter und ein Getter, wo soll da irgendwas getestet werden?
 

JavaExpInc

Mitglied
Doch das ist gültiger Java-Code ;)

Wie erstelle ich denn nun den Setter richtig für das CreationDate? Das ist ja auch meine Frage, eigtl dürfe der nicht so wie bei mir sein weil man nicht übergeben soll, da man es sonst später nocheinmal aufrufen kann. Aber wenn ich es so mache wie am Anfang, weiß ich nicht wie ich es testen soll.

Hier der aktuelle Test;)

Code:
@Test
public void test(){
testClass t = new testClass();
LocalDateTime tmp = LocalDateTime.now();
t.setCreationDate(tmp);
assertEquals("creationDate not correct", tmp, t.getCreationDate());
 

Robat

Top Contributor
Mal zum Setter:
Du übergibst doch das neue LocalDateTime-Objekt schon als Parameter im Setter .. jetzt musst du nur noch das alte mit dem neuen überschreiben ..

Das wird aber noch nicht reichen. Deine testClass muss das LocalDateObjekt im Konstruktror übergeben bekommen .. ansonsten wird es nie das selbe Objekt (Datum) sein, da (wie du schon sagtest) sonst kleine Abweichungen vorliegen.
 

mrBrown

Super-Moderator
Mitarbeiter
Doch das ist gültiger Java-Code ;)
Nö, das: public class testclass(){ ist sicherlich keine gültige Klassendeklaration.

Und in diesem Code:
Java:
public class testClass{
 public testClass(){
 setCreationDate(LocalDateTime.now());
}
    public LocalDateTime getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(LocalDateTime date) {
        this.creationDate = LocalDateTime.now();
    }
}

gibt es this.creationDate nicht.



Für den Test wäre es gut, erstmal das gewünschte Verhalten zu kennen.
Soll es einen öffentlichen Setter (und damit die Möglichkeit zum Ändern) geben oder nicht?
Oder soll das CreationDate bei erstellen der Klasse festgelegt werden?
 

JavaExpInc

Mitglied
@mrBrown
Okay da hast du recht, da hab ich mich hier im Forum wohl vertippt gehabt ;)
Es soll kein öffentlicher Setter sein, da mein Erstelldatum nur einmalig beim erstellen des Objektes gesetzt werden soll und danach nicht mehr.

@Robat
Es soll ja nicht überschrieben werden, da es nur einmalig genutzt werden soll wenn die Klasse erstellt wird. Danach soll man das creationDate nicht mehr verändern.
 

JavaExpInc

Mitglied
Code:
public class testClass{
 public testClass(LocalDateTime LocalDateTime.now()){
this.creationDate = LocalDateTime.now())
}
    public LocalDateTime getCreationDate() {
        return creationDate;
   }
}
Meinst du so? Und dann halt ohne Setter Methode sondern nur mit Getter Methode?
 

JavaExpInc

Mitglied
Mh Ich glaube ich stehe wieder auf dem Schlauch.
Code:
public class testClass{
 public testClass(LocalDateTime date){
this.creationDate = date;
}
    public LocalDateTime getCreationDate() {
        return creationDate;
   }
}
Du meinst das ja so oder? Jedoch soll dieses Objekt in einer grafischen Oberfläche (Webseite & App) ausgefüllt werden - das creationDate soll aber vom System übergeben werden. Wie es jetzt ist müsste der User das ja selber eingeben. Oder wie bewerkstellige ich das dann so, dass es beim reinschreiben in die DB automatisch passiert?
 

mrBrown

Super-Moderator
Mitarbeiter
Der User dieses Objekts ist der Programmierer, also du. Das der Nutzer der Anwendung das nicht angeben muss, sondern das automatisch passiert, ist doch genau dein Job ;)


Wenn das Objekt selbst bestimmen soll, wann es angelegt werden soll, dann musst du now() nutzen - was für diesen Fall die Anforderungen sind, müsstest du aber erst einmal Festlegen ;)
 

JavaExpInc

Mitglied
Das Objekt an sich wird von dem Nutzer angelegt über die Webseite. Jedoch gibt er da in dem textfeld ja nicht das Datum an wann er es erstellt -> das soll im Hintergrund automatisch passieren.

Sowie es momentan ist, müsste der Nutzer es ja im Konstruktor selbst mit übergeben. Also bleibt es bei dem wie ich es vorher schon gemacht hatte?! Weil als Konstruktorübergabe müsste der Nutzer der Website es ja selbst bestimmen. Und da die Methode nur einmal aufgerufen werden soll kann ich doch im Konstruktor direkt angeben

Code:
public testclass(){
this.creationDate = LocalDateTime.now();
}

Oder?
 

mrBrown

Super-Moderator
Mitarbeiter
Das Objekt an sich wird von dem Nutzer angelegt über die Webseite. Jedoch gibt er da in dem textfeld ja nicht das Datum an wann er es erstellt -> das soll im Hintergrund automatisch passieren.

Sowie es momentan ist, müsste der Nutzer es ja im Konstruktor selbst mit übergeben.
Hast du jemals als Benutzer einer Website direkt einen Konstruktor aufgerufen?


Also bleibt es bei dem wie ich es vorher schon gemacht hatte?! Weil als Konstruktorübergabe müsste der Nutzer der Website es ja selbst bestimmen. Und da die Methode nur einmal aufgerufen werden soll kann ich doch im Konstruktor direkt angeben

Code:
public testclass(){
this.creationDate = LocalDateTime.now();
}

Oder?

Du kannst das genausogut dem Konstruktor übergeben, das kommt eben auf die Anforderungen an, die du als Nutzer der API (!= Nutzer der Website) hast.
Wenn dir das so reicht, dann mach es so.
 

JavaExpInc

Mitglied
Alles klar, dann habe ich das dort falsch verstanden. Mir fehlt da einfach noch die Erfahrung...

Was hätte es denn für einen Vorteil wenn ich es in den Konstruktor gebe?
 

JavaExpInc

Mitglied
Okay dann bleibe ich bei meiner Variation :D Aber welche sollte ich denn jz nehmen?

1.
Code:
public testClass(){
creationDate = LocalDateTime.now();
}

2.
Code:
public testClass(){
this.setCreationDate();
}

natürlich immer mit der GetMethode.
 

JavaExpInc

Mitglied
dann würde ich es so machen?

Code:
public class testclass{
private final creationDate;

public testclass(){
creationDate = LocalDateTime.now();
}
}
 

mrBrown

Super-Moderator
Mitarbeiter
Keine, die mit equals vergleichen kann, dafür musst du eben irgendwas übergeben.

Du kannst aber, wenn nicht auf den genauen Zeitpunkt getestet werden muss, die Zeit vor und nach dem Konstruktor-Aufruf merken, und dann prüfen, ob creationDate dazwischen liegt.

Ein anderer Weg wäre, eine Clock zu übergeben, dann müsste man aber wieder was übergeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa Date vs LocalDate/LocalDateTime Java Basics - Anfänger-Themen 13
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
B JAXB und LocalTime / LocalDate / LocalDateTime Java Basics - Anfänger-Themen 1
B DateTimeFormatter nach LocalDateTime, wenn dd.MM.yyyy oder dd.MM.yyyy mm:hh Java Basics - Anfänger-Themen 5
M Verhalten von LocalDateTime#getNano() Java Basics - Anfänger-Themen 1
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
S SQL DateTime in Java 8 LocalDateTime Java Basics - Anfänger-Themen 3
S Listen Objekte nach LocalDateTime sortieren Java Basics - Anfänger-Themen 2
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
U Sortierung in collections testen Java Basics - Anfänger-Themen 11
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
nonickatall Ausführbarkeit von Code testen bzw. Remote Debugging Java Basics - Anfänger-Themen 4
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
J Womit kann ich diese Methode testen? Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
K Testen in BlueJ Java Basics - Anfänger-Themen 2
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
G Testen mit JUnit Java Basics - Anfänger-Themen 4
J Worte auf Gültigkeit bzgl. Alphabet testen Java Basics - Anfänger-Themen 1
T OOP Zwei Klassen Testen (Arrary Iterieren) Java Basics - Anfänger-Themen 6
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
K Testen von Methoden Java Basics - Anfänger-Themen 5
kilopack15 Java Array Skalarprodukt testen Java Basics - Anfänger-Themen 21
K Testen von Methoden Java Basics - Anfänger-Themen 1
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
I Programm testen, aber wie? Java Basics - Anfänger-Themen 14
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
W Testen auf Existenz des Verzeichnisses Java Basics - Anfänger-Themen 4
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
P OOP Testen ob 2 Strings gleich sind Java Basics - Anfänger-Themen 8
B Void Mehoden Testen Java Basics - Anfänger-Themen 13
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
E Arrays testen Java Basics - Anfänger-Themen 4
D Assertion Error beim Testen Java Basics - Anfänger-Themen 4
T Junit --Exception testen Java Basics - Anfänger-Themen 15
S Sortierverfahren - wie Stabilität testen (im array) Java Basics - Anfänger-Themen 3
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
B Testen eines Bridge-Spiels Java Basics - Anfänger-Themen 5
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
H Input/Output Testen ob Datei leer Java Basics - Anfänger-Themen 14
C Methode Testen Java Basics - Anfänger-Themen 12
J Programm in main Methode testen Java Basics - Anfänger-Themen 29
C Klammerung testen Java Basics - Anfänger-Themen 10
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23
xehpuk In JUnit über eigenen Thread testen Java Basics - Anfänger-Themen 3
? Fehler bei Testen Java Basics - Anfänger-Themen 17
vandread Internationalisierung von einem Projekt testen? Java Basics - Anfänger-Themen 2
F Interface Testen Java Basics - Anfänger-Themen 5
T Methoden Testen und schaun ob richtiges Ergebnis? Java Basics - Anfänger-Themen 5
J Testen Java Basics - Anfänger-Themen 3
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
B OOP Testen - JUnit Java Basics - Anfänger-Themen 30
J Hash-Maps / ArrayLists testen Java Basics - Anfänger-Themen 12
A Programm mit Daten einer Datei testen Java Basics - Anfänger-Themen 4
G netzwerkapplikationen testen Java Basics - Anfänger-Themen 7
S Testen ob ein String ein Datum ist. Java Basics - Anfänger-Themen 5
T Testen ob eine Zahl im array doppel vorkommt. Java Basics - Anfänger-Themen 7
G *.java Datei mit Editor starten und testen Java Basics - Anfänger-Themen 6
reno Testen ob String leer ist Java Basics - Anfänger-Themen 12
G testen ob int gleich null Java Basics - Anfänger-Themen 15
G testen ob in String zahl Java Basics - Anfänger-Themen 10
K Program Testen mit Macintosh Java Basics - Anfänger-Themen 2
F Testen ob Double-Variable Java Basics - Anfänger-Themen 13
G SSL Verbindung testen? Java Basics - Anfänger-Themen 1
G Methoden mit Junit testen? Java Basics - Anfänger-Themen 2
M Kostenloser webspace zum testen von Javaprogrammen ? Java Basics - Anfänger-Themen 3
A mit Junit testen Java Basics - Anfänger-Themen 7
G Baum testen Java Basics - Anfänger-Themen 20
H Testen, ob Thread schläft Java Basics - Anfänger-Themen 3
S Testen ob ein Char Array noch nicht belegt ist! Java Basics - Anfänger-Themen 3
M Testen ob ein Sample noch abgespielt wird Java Basics - Anfänger-Themen 6
G wie eine selbstgeschriebene Klasse testen? Java Basics - Anfänger-Themen 15
P programm testen ohne main-funktion Java Basics - Anfänger-Themen 19
B Klammerung testen Java Basics - Anfänger-Themen 12
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben