Skip to content

Commit

Permalink
Provide a session test framework for JUnit 5
Browse files Browse the repository at this point in the history
A first draft for realizing session tests with JUnit 5.

It uses an extension that intercepts test methods calls to start a
separate Eclipse session in which the tests are executed. The results
are evaluated in the intercepted method execution in way they were
evaluated for existing JUnit-3-based session tests.

Functionality is demonstrated in a manually executed sample session test
as well as by application to the session test in the runtime tests
project. Since JUnit 5 test suites are not yet supported, the project is
adapted to execute tests without suites.

In order to get the session test running with Tycho, an adaptation of
the test application provided via PDE is necessary, because a faulty
class loader is currently used for the test engines during remote
execution.
  • Loading branch information
HeikoKlare committed Jan 11, 2024
1 parent 77f6f06 commit 7944711
Show file tree
Hide file tree
Showing 14 changed files with 555 additions and 47 deletions.
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
<properties>
<tycho.scmUrl>scm:git:https://github.com/eclipse-platform/eclipse.platform.git</tycho.scmUrl>
<tycho.surefire.testClassesDirectory>${project.build.outputDirectory}</tycho.surefire.testClassesDirectory>
<test.includes></test.includes>
<test.excludes></test.excludes>
</properties>

<!--
Expand Down Expand Up @@ -75,6 +77,12 @@
<artifactId>tycho-surefire-plugin</artifactId>
<configuration>
<testClassesDirectory>${tycho.surefire.testClassesDirectory}</testClassesDirectory>
<includes>
<include>${test.includes}</include>
</includes>
<excludes>
<exclude>%{test.excludes}</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
Expand Down
18 changes: 16 additions & 2 deletions runtime/tests/org.eclipse.core.tests.harness/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,36 @@ Bundle-SymbolicName: org.eclipse.core.tests.harness;singleton:=true
Bundle-Version: 3.15.300.qualifier
Bundle-Vendor: Eclipse.org
Export-Package: org.eclipse.core.tests.harness;version="2.0",
org.eclipse.core.tests.harness.performance,
org.eclipse.core.tests.harness.session,
org.eclipse.core.tests.session;version="2.0"
Require-Bundle: org.junit,
org.eclipse.test.performance,
org.eclipse.core.runtime;bundle-version="[3.29.0,4.0.0)",
org.eclipse.jdt.junit.runtime,
org.eclipse.jdt.junit4.runtime,
org.eclipse.pde.junit.runtime
org.eclipse.jdt.junit5.runtime,
org.eclipse.pde.junit.runtime,
junit-platform-launcher,
junit-platform-engine,
junit-jupiter-engine,
junit-vintage-engine,
junit-platform-suite-commons,
junit-platform-suite-engine
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-17
Import-Package: javax.xml.parsers,
net.bytebuddy,
org.apiguardian.api,
org.assertj.core.api,
org.junit.jupiter.api,
org.junit.platform.suite.api,
org.junit.jupiter.api.condition,
org.junit.jupiter.api.extension,
org.junit.jupiter.migrationsupport,
org.junit.jupiter.params,
org.junit.platform.commons,
org.junit.platform.runner,
org.junit.platform.suite.api,
org.opentest4j,
org.w3c.dom,
org.xml.sax
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/*******************************************************************************
* Copyright (c) 2023 Vector Informatik GmbH and others.
*
* 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-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.core.tests.harness.session;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Indicates that a session of a test case is expected to terminate with a
* failure or error. To be used in combination with a
* {@link SessionTestExtension}.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SessionShouldError {
// Marker annotation
}
Loading

0 comments on commit 7944711

Please sign in to comment.