Ich habe eine Haupt-app-context.xml, das eine Eigenschaft Platzhalter mit zwei Standorten definiert: Standardeigenschaften-Datei und eine optionale Überschreibungsdatei:Set Systemeigenschaften oder Umgebungsvariablen Vor Property Platzhalter mit SpringJunit4ClassRunner
<context:property-placeholder
location="classpath:config.properties,${configOverride}"
ignore-resource-not-found="true" />
Die optionale override location ermöglicht die Angabe einer anderen Eigenschaftendatei (zB "-DconfigOverride = file: /home/app/config.properties") mit nur den Eigenschaften, die überschrieben werden sollen.
Für meine Unit-Tests, ich bin mit einem Test-Kontext, die app-context.xml importiert:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:test-context.xml"})
public class UserServiceTest {
...
}
Wie kann ich Systemeigenschaften oder Umgebungsvariablen innerhalb der Anwendung vor dem Anwendungskontext gesetzt wird geladen? Ich möchte den gleichen Effekt erreichen, indem ich "-DconfigOverride = classpath: testConfig.properties" über alle Testklassen hinweg setze, ohne, wenn möglich, ein Befehlszeilenarg anzugeben.
Danke für den Vorschlag +1 - Ich dachte das gleiche, aber ich wollte überprüfen, ob ich etwas im Anwendungskontext tun konnte, bevor ich alle Testklassen ändere. Ich überschreibe einige Beans im Testkontext, aber da mehrere Eigenschaftsplatzhalter zulässig sind, kann ich den Eigenschaftsplatzhalter nicht überschreiben. – andy