Ticket #16567: 16567.patch

File 16567.patch, 2.4 KB (added by taylor.smock, 7 months ago)

Allow JUnit 5 tests to use JOSMTestRules

  • .classpath

     
    3232                        <attribute name="test" value="true"/>
    3333                </attributes>
    3434        </classpathentry>
     35        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
     36                <attributes>
     37                        <attribute name="test" value="true"/>
     38                </attributes>
     39        </classpathentry>
    3540        <classpathentry kind="lib" path="test/lib/jfcunit.jar">
    3641                <attributes>
    3742                        <attribute name="test" value="true"/>
  • test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java

     
    2323import java.util.logging.Handler;
    2424
    2525import org.awaitility.Awaitility;
     26import org.junit.jupiter.api.extension.AfterEachCallback;
     27import org.junit.jupiter.api.extension.BeforeEachCallback;
     28import org.junit.jupiter.api.extension.ExtensionContext;
    2629import org.junit.rules.TemporaryFolder;
    2730import org.junit.rules.TestRule;
    2831import org.junit.runner.Description;
     
    7982 *
    8083 * @author Michael Zangl
    8184 */
    82 public class JOSMTestRules implements TestRule {
     85public class JOSMTestRules implements TestRule, AfterEachCallback, BeforeEachCallback {
    8386    private int timeout = isDebugMode() ? -1 : 10 * 1000;
    8487    private TemporaryFolder josmHome;
    8588    private boolean usePreferences = false;
     
    433436        return statement;
    434437    }
    435438
     439    @Override
     440    public void beforeEach(ExtensionContext context) throws Exception {
     441        Statement temporaryStatement = new Statement() {
     442            @Override
     443            public void evaluate() throws Throwable {
     444                // do nothing
     445            }
     446        };
     447        try {
     448            this.apply(temporaryStatement,
     449                    Description.createTestDescription(this.getClass(), "JOSMTestRules JUnit5 Compatibility"))
     450                    .evaluate();
     451        } catch (Throwable e) {
     452            throw new Exception(e);
     453        }
     454    }
     455
     456    @Override
     457    public void afterEach(ExtensionContext context) throws Exception {
     458        // do nothing for now
     459    }
     460
    436461    /**
    437462     * Set up before running a test
    438463     * @throws InitializationError If an error occurred while creating the required environment.