org.junit.rules.TestRulepublic class ProvideSystemProperty
extends org.junit.rules.ExternalResource
ProvideSystemProperty rule provides an arbitrary value for a
system property to a test. After the test the original value is restored. You
can ensure that a property is not set by providing null (or using
ClearSystemProperties).
Let's assume the system property MyProperty is not set and the system
property OtherProperty has the value OtherValue. Now run the
test
public void MyTest {
@Rule
public final ProvideSystemProperty provideSystemProperty
= new ProvideSystemProperty("MyProperty", "MyValue")
.and("OtherProperty", null);
@Test
public void overridesProperty() {
assertEquals("MyValue", System.getProperty("MyProperty"));
}
@Test
public void deletesProperty() {
assertNull(System.getProperty("OtherProperty"));
}
}
Both tests succeed and after the tests, the system property
MyProperty is not set and the system property OtherProperty
has the value OtherValue.
You can use a properties file to supply properties for the ProvideSystemProperty rule. The file can be from the file system or the class path. In the first case use
@Rule
public final ProvideSystemProperty properties = ProvideSystemProperty
.fromFile("/home/myself/example.properties");
and in the second case use
@Rule
public final ProvideSystemProperty properties = ProvideSystemProperty
.fromResource("example.properties");
If you want to set a property for a single test then you can use
RestoreSystemProperties
along with System.setProperty(String, String).
@Rule
public final TestRule restoreSystemProperties
= new RestoreSystemProperties();
@Test
public void test() {
System.setProperty("YourProperty", "YourValue");
...
}| Constructor | Description |
|---|---|
ProvideSystemProperty() |
Deprecated.
|
ProvideSystemProperty(java.lang.String name,
java.lang.String value) |
| Modifier and Type | Method | Description |
|---|---|---|
protected void |
after() |
|
ProvideSystemProperty |
and(java.lang.String name,
java.lang.String value) |
|
protected void |
before() |
|
static ProvideSystemProperty |
fromFile(java.lang.String name) |
|
static ProvideSystemProperty |
fromResource(java.lang.String name) |
|
void |
setProperty(java.lang.String name,
java.lang.String value) |
Deprecated.
Please use
RestoreSystemProperties
along with System.setProperty(String, String). |
@Deprecated public ProvideSystemProperty()
public ProvideSystemProperty(java.lang.String name,
java.lang.String value)
public static ProvideSystemProperty fromFile(java.lang.String name)
public static ProvideSystemProperty fromResource(java.lang.String name)
@Deprecated
public void setProperty(java.lang.String name,
java.lang.String value)
RestoreSystemProperties
along with System.setProperty(String, String).This method is deprecated. If you're still using it, please replace your current code
@Rule
public final ProvideSystemProperty provideSystemProperty = new ProvideSystemProperty();
@Test
public void test() {
provideSystemProperty.setProperty("YourProperty", "YourValue");
...
}
with this code:
@Rule
public final TestRule restoreSystemProperties = new RestoreSystemProperties();
@Test
public void test() {
System.setProperty("YourProperty", "YourValue");
...
}name - the name of the property.value - the new value of the property.public ProvideSystemProperty and(java.lang.String name, java.lang.String value)
protected void before()
throws java.lang.Throwable
before in class org.junit.rules.ExternalResourcejava.lang.Throwableprotected void after()
after in class org.junit.rules.ExternalResourceCopyright © 2011–2018. All rights reserved.