org.junit.contrib.java.lang.system
Class ClearSystemProperties

java.lang.Object
  extended by org.junit.rules.ExternalResource
      extended by org.junit.contrib.java.lang.system.ClearSystemProperties
All Implemented Interfaces:
org.junit.rules.TestRule

public class ClearSystemProperties
extends org.junit.rules.ExternalResource

The ClearSystemProperties rule clears a set of system properties when the test starts and restores their original values when the test finishes (whether it passes or fails).

Supposing that the system property YourProperty has the value YourValue. Now run the test

 public void YourTest {
   @Rule
   public final TestRule clearSystemProperties
     = new ClearSystemProperties("YourProperty");

   @Test
   public void verifyProperty() {
     assertNull(System.getProperty("YourProperty"));
   }
 }
 
The test succeeds and afterwards the system property YourProperty has the value YourValue again.

The ClearSystemProperties rule accepts a list of properties in case you need to clear multiple properties:

 @Rule
 public final TestRule clearSystemProperties
   = new ClearSystemProperties("first", "second", "third");
 

Clear property for a single test

If you want to clear a property for a single test then you can use RestoreSystemProperties along with System.clearProperty(String).

 @Rule
 public final TestRule restoreSystemProperties
   = new RestoreSystemProperties();

 @Test
 public void test() {
   System.clearProperty("YourProperty");
   ...
 }


Constructor Summary
ClearSystemProperties(String... properties)
          Creates a ClearSystemProperties rule that clears the specified properties and restores their original values when the test finishes (whether it passes or fails).
 
Method Summary
protected  void after()
           
protected  void before()
           
 void clearProperty(String property)
          Deprecated. Please use RestoreSystemProperties along with System.clearProperty(String).
 
Methods inherited from class org.junit.rules.ExternalResource
apply
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClearSystemProperties

public ClearSystemProperties(String... properties)
Creates a ClearSystemProperties rule that clears the specified properties and restores their original values when the test finishes (whether it passes or fails).

Parameters:
properties - the properties' names.
Method Detail

clearProperty

@Deprecated
public void clearProperty(String property)
Deprecated. Please use RestoreSystemProperties along with System.clearProperty(String).

Clears the property and restores the value of the property at the point of clearing it.

This method is deprecated. If you're still using it, please replace your current code

 @Rule
 public final ClearSystemProperties clearSystemProperties = new ClearSystemProperties();

 @Test
 public void test() {
   clearSystemProperties.clearProperty("YourProperty");
   ...
 }
with this code:
 @Rule
 public final TestRule restoreSystemProperties = new RestoreSystemProperties();

 @Test
 public void test() {
   System.clearProperty("YourProperty");
   ...
 }

Parameters:
property - the name of the property.
Since:
1.6.0

before

protected void before()
               throws Throwable
Overrides:
before in class org.junit.rules.ExternalResource
Throws:
Throwable

after

protected void after()
Overrides:
after in class org.junit.rules.ExternalResource


Copyright © 2011–2018. All rights reserved.