Ich habe eine geschützte Methode, die wie folgt aussieht. Es verwendet endgültige statische Variablen aus einer Constants.java-Datei.Testen Sie eine Methode durch Ändern der endgültigen statischen Variablen
class A {
protected Configuration connectConfig() {
ConfigDescriptor desc = new ConfigDescriptor.Builder()
.project(Constants.REMOTE_CONFIG_PROJECT_NAME)
.name(Constants.REMOTE_CONFIG_PROJECT_CONFIG_NAME)
.version(Constants.REMOTE_CONFIG_PROJECT_VERSION)
.build();
return ConfigProvider.of(desc, getClass().getClassLoader());
}
public boolean process() {
Configuration config = connectConfig();
if(config == null) {
return false;
}
}
}
Jetzt möchte ich Unit-Test diese Methode process
für die remote config
zum Scheitern verurteilt.
Wenn ich nur process()
Methode testen, wird es übergeben, da die Constants.java
richtige Werte zu verbinden hat. Zum Testen möchte ich diese Werte so ändern, dass die Remote-Konfiguration returns
null
;
Hinweis: Wir möchten Mockito
nicht verwenden, um die Werte zu überspielen.
Ich bin verwirrt ... warum können Sie nicht einfach die Werte in constants.java vorübergehend ändern? – Austin
@Austin: Er Tests laufen als Teil eines CI-Jobs, so dass ich nicht die tatsächlichen Werte ändern möchte. Wir wollen auch nicht Mockito verwenden, um die Werte zu verspotten. – tushR
Können Sie den Code dann nicht ändern? – Austin