/* * Copyright 2015-2023 the original author or authors. * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v2.0 which * accompanies this distribution and is available at * * https://www.eclipse.org/legal/epl-v20.html */ package example; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.parallel.ExecutionMode.CONCURRENT; import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ; import static org.junit.jupiter.api.parallel.ResourceAccessMode.READ_WRITE; import static org.junit.jupiter.api.parallel.Resources.SYSTEM_PROPERTIES; import java.util.Properties; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.parallel.Execution; import org.junit.jupiter.api.parallel.ResourceLock; // tag::user_guide[] @Execution(CONCURRENT) class SharedResourcesDemo { private Properties backup; @BeforeEach void backup() { backup = new Properties(); backup.putAll(System.getProperties()); } @AfterEach void restore() { System.setProperties(backup); } @Test @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ) void customPropertyIsNotSetByDefault() { assertNull(System.getProperty("my.prop")); } @Test @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) void canSetCustomPropertyToApple() { System.setProperty("my.prop", "apple"); assertEquals("apple", System.getProperty("my.prop")); } @Test @ResourceLock(value = SYSTEM_PROPERTIES, mode = READ_WRITE) void canSetCustomPropertyToBanana() { System.setProperty("my.prop", "banana"); assertEquals("banana", System.getProperty("my.prop")); } } // end::user_guide[]