2017-12-20 3 views
1

Ich mache einen Webdienst mit Spring MVC in Eclipse, der Daten aus einer Datenbank liest und sie als JSON ablegt. Ich habe vor kurzem eine neue Variable in der Klasse, die eine Zeile aus einer Tabelle in der Datenbank, zum Beispiel zu halten verwendet wird:Eine Klassenvariable umbenennen, die in der JSON-Ausgabe nicht enthalten ist

public class DbRow { 
    private Integer Id; 
    private String Label; 
    ... 
    public String getLabel() { 
    return Label; 
    } 
    public void setLabel(String label) { 
    this.Label = label; 
    } 
} 

jedoch, wie später der Name der Spalte in der Datenbank geändert, überlegte ich dies durch Umbenennen die Klassenvariable (mit Umgestalten -> Umbenennen ... oder Alt + Shift + R in Eclipse) sowie die Getter und Setter-Methoden wie folgt aus:

public class DbRow { 
    private Integer Id; 
    private String Title; 
    ... 
    public String getTitle() { 
    return Title; 
    } 
    public void setLabel(String title) { 
    this.Title = title; 
    } 
} 

und nun mein Problem ist, dass in der JSON-Ausgabe von der Service ist das Feld immer noch mit seinem alten Namen wie dieser

{"Id":"100","Label":"Test"} 

statt

{"Id":"100","Title":"Test"} 

Das bricht mir mockMvc Test, den ich mit TestNG in Eclipse laufen (z Fehler org.springframework.restdocs.snippet.SnippetException: Felder mit den folgenden Pfaden wurden nicht in der Nutzlast gefunden: [Title]).

Wie könnte ich das beheben?

+1

Die Methode 'setLabel (String title)' wurde möglicherweise nicht refaktoriert. – lzagkaretos

+0

bist du dir sicher über das Umbenennen von Getter und Setter? –

+0

Es war tatsächlich der Getter, ich mischte das Beispiel. –

Antwort

0

Ihre Setter-Methode ist immer noch alt

public void setLabel(String title) { this.Title = title; }

Update mit setTitle(String title). Versuchen Sie außerdem, ein Projekt zu erstellen und anschließend Ihre Testfälle auszuführen.

+0

In der Tat habe ich einen Fehler in dem Beispiel gemacht, aber im realen Code war es der Getter, der nicht umbenannt wurde, also war das das wirkliche Problem. Netter Vorschlag in der Tat :-) Danke. –

+0

Ich hätte 'Rename getter' und 'Rename setter' im Dialogfeld 'Rename Field' verwenden sollen, um die Namen von Getter und Setter zusammen mit dem Feld automatisch zu refaktorieren. –

Verwandte Themen