Diese Frage entsteht beim Versuch, Testfälle zu schreiben. Foo ist eine Klasse innerhalb der Framework-Bibliothek, auf die ich keinen Quellzugriff habe.Java-Finalmethoden über Reflektion oder andere Mittel überschreiben?
public class Foo{
public final Object getX(){
...
}
}
meine Anwendungen
public class Bar extends Foo{
public int process(){
Object value = getX();
...
}
}
Das Gerät Testfall nicht in der Lage ist, zu initialisieren, da ich nicht ein Foo Objekt durch andere Abhängigkeiten schaffen. Der BarTest löst einen Nullzeiger aus, da der Wert null ist.
Gibt es eine Möglichkeit, ich kann Reflection API verwenden, um die getX() auf nicht endgültige? oder wie soll ich testen?
Das heißt nicht, welche Unit-Tests sind für. Unit-Tests sind für extrem granulare Code-Einheiten. Was Sie beschreiben, klingt eher nach Integrationstests oder möglicherweise nach Funktionstests. –
Nicht unbedingt; Ich kenne die spezifischen Umstände nicht, in denen er arbeitet (dh andere Klassen, DB usw.), aber es gibt bestimmte Tests, die Sie mit vielen Klassen gleichzeitig durchführen können - zum Beispiel, wenn Sie eine externe Bibliothek verwenden OK, um anzunehmen, dass es in Ordnung ist und alle seine Klassen in Ihren Tests verwenden. – Seb
Ja, es gibt "bestimmte Tests, die Sie mit vielen Klassen gleichzeitig machen können". Das sind keine Unit-Tests. Immer noch nützlich und wichtig zu tun, aber sie sind keine ** Unit ** -Tests. –