Add junit-6-migration module: JUnit 5.14.4 vs 6.1.3, API diff and behaviour probes
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01YPgGH6aMbSLANL3E2HHmS6
This commit is contained in:
@@ -5,9 +5,11 @@ Runnable companion code for the testing posts on [ankurm.com](https://ankurm.com
|
|||||||
| Module | Post | Stack |
|
| Module | Post | Stack |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| [`mockito/`](mockito) | Mockito 5 Deep Dive: Static, Final and Constructor Mocking, ArgumentCaptor and Strict Stubs | Mockito 5.24.0, JUnit 6.1.3, JDK 25 |
|
| [`mockito/`](mockito) | Mockito 5 Deep Dive: Static, Final and Constructor Mocking, ArgumentCaptor and Strict Stubs | Mockito 5.24.0, JUnit 6.1.3, JDK 25 |
|
||||||
|
| [`junit-6-migration/`](junit-6-migration) | JUnit 5 to 6 Migration: What Was Removed, What Changed and How to Upgrade | JUnit 5.14.4 and 6.1.3, JDK 25 |
|
||||||
|
|
||||||
Every module keeps the real output of its tests in `output/`. Each test writes the transcript and asserts the same facts, so the numbers in the posts fail the build if they stop being true.
|
Every module keeps the real output of its tests in `output/`. Each test writes the transcript and asserts the same facts, so the numbers in the posts fail the build if they stop being true.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd mockito && ./scripts/run-all.sh
|
cd mockito && ./scripts/run-all.sh
|
||||||
|
cd ../junit-6-migration && ./scripts/run-all.sh
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# junit-6-migration
|
||||||
|
|
||||||
|
Companion module for the ankurm.com article on **migrating from JUnit 5 to JUnit 6**. The same tests run on JUnit 5.14.4 and 6.1.3, and the two
|
||||||
|
releases are compared jar against jar. Nothing here is copied from release notes: each file in `output/` was produced by running something.
|
||||||
|
|
||||||
|
## Versions
|
||||||
|
|
||||||
|
| Component | Version | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| JUnit (before) | `5.14.4` Jupiter / `1.14.4` Platform | last 5.x release on Maven Central at the time of writing |
|
||||||
|
| JUnit (after) | `6.1.3` | Jupiter, Platform and Vintage all share this one number |
|
||||||
|
| JUnit 4 | `4.13.2` | only for the Vintage check |
|
||||||
|
| Java | build on `25`, `--release 17` | JUnit 6 jars need Java 17 |
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/run-all.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
| File | What it shows |
|
||||||
|
|---|---|
|
||||||
|
| `01-versions-and-baseline.txt` | version numbers and the Java level of each jar's class files |
|
||||||
|
| `02-removed-api.txt` | public classes and members in 5.14.4 that are not in 6.1.3, and whether 5.14.4 had deprecated them |
|
||||||
|
| `03-csv-behaviour-<version>.txt` | one set of `@CsvSource` and `@CsvFileSource` cases run on each version |
|
||||||
|
| `04-vintage-junit4-<version>.txt` | a JUnit 4 test run through the Vintage engine on each version |
|
||||||
|
| `05-old-apis-<version>.txt` | what the compiler says about three deprecated 5.x APIs on each version |
|
||||||
|
| `06-fixed-apis-<version>.txt` | the replacements compile on both versions |
|
||||||
|
|
||||||
|
`pom.xml` has two profiles, `junit5` and `junit6`, that change nothing but `junit.version`.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
artifact 5.x jar 6.x jar
|
||||||
|
junit-jupiter-api 5.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-jupiter-engine 5.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-jupiter-params 5.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-commons 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-engine 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-launcher 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-suite-api 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-suite-engine 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-platform-testkit 1.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
|
junit-vintage-engine 5.14.4 (Java 8) 6.1.3 (Java 17)
|
||||||
@@ -0,0 +1,318 @@
|
|||||||
|
== junit-jupiter-api: public classes removed: 6, members removed from classes that remain: 8, new classes: 64
|
||||||
|
class org.junit.jupiter.api.Assertions$TimeoutFailureFactory [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.api.AssertionsKt$assertDoesNotThrow$3 [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.api.AssertionsKt$assertThrows$4 [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.api.AssertionsKt$evaluateAndWrap$1 [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.api.AssertionsKt$evaluateAndWrap$2 [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.api.MethodOrderer$Alphanumeric [deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.Assertions: public static <T extends java.lang.Object, E extends java.lang.Throwable> T assertTimeoutPreemptively(java.time.Duration, org.junit.jupiter.api.function.ThrowingSupplier<T>, java.util.function.Supplier<java.lang.String>, org.junit.jupiter.api.Assertions$TimeoutFailureFactory<E>) throws E [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.AssertionsKt: public static final <R extends java.lang.Object> org.junit.jupiter.api.function.ThrowingSupplier<R> evaluateAndWrap(kotlin.jvm.functions.Function0<? extends R>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.extension.ExtensionContext: public abstract <T extends java.lang.Object> java.util.Optional<T> getConfigurationParameter(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.extension.ExtensionContext$Store: public abstract <K extends java.lang.Object, V extends java.lang.Object> java.lang.Object getOrComputeIfAbsent(K, java.util.function.Function<K, V>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.extension.ExtensionContext$Store: public abstract <K extends java.lang.Object, V extends java.lang.Object> V getOrComputeIfAbsent(K, java.util.function.Function<K, V>, java.lang.Class<V>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.extension.InvocationInterceptor: public default void interceptDynamicTest(org.junit.jupiter.api.extension.InvocationInterceptor$Invocation<java.lang.Void>, org.junit.jupiter.api.extension.ExtensionContext) throws java.lang.Throwable [deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider: public abstract java.util.stream.Stream<org.junit.jupiter.api.extension.TestTemplateInvocationContext> provideTestTemplateInvocationContexts(org.junit.jupiter.api.extension.ExtensionContext) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.api.io.TempDir: public static final java.lang.String SCOPE_PROPERTY_NAME [deprecated in 5.x]
|
||||||
|
== junit-jupiter-engine: public classes removed: 0, members removed from classes that remain: 30, new classes: 17
|
||||||
|
member org.junit.jupiter.engine.Constants: public static final java.lang.String TEMP_DIR_SCOPE_PROPERTY_NAME [deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.CachingJupiterConfiguration: public <T extends java.lang.Object> java.util.Optional<T> getRawConfigurationParameter(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.DefaultJupiterConfiguration: public org.junit.jupiter.engine.config.DefaultJupiterConfiguration(org.junit.platform.engine.ConfigurationParameters, org.junit.platform.engine.OutputDirectoryCreator) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.DefaultJupiterConfiguration: public <T extends java.lang.Object> java.util.Optional<T> getRawConfigurationParameter(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.EnumConfigurationParameterConverter: public E get(java.lang.String, java.util.function.Function<java.lang.String, java.util.Optional<java.lang.String>>, E) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String EXTENSIONS_AUTODETECTION_INCLUDE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String EXTENSIONS_AUTODETECTION_EXCLUDE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEACTIVATE_CONDITIONS_PATTERN_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String PARALLEL_EXECUTION_ENABLED_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String CLOSING_STORED_AUTO_CLOSEABLE_ENABLED_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_EXECUTION_MODE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_CLASSES_EXECUTION_MODE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String EXTENSIONS_AUTODETECTION_ENABLED_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String EXTENSIONS_TIMEOUT_THREAD_DUMP_ENABLED_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_TEST_INSTANCE_LIFECYCLE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_DISPLAY_NAME_GENERATOR_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_TEST_METHOD_ORDER_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_TEST_CLASS_ORDER_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public static final java.lang.String DEFAULT_TEST_INSTANTIATION_EXTENSION_CONTEXT_SCOPE_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.config.JupiterConfiguration: public abstract <T extends java.lang.Object> java.util.Optional<T> getRawConfigurationParameter(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.descriptor.ClassTestDescriptor: public org.junit.platform.engine.support.hierarchical.Node$ExecutionMode getExecutionMode() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.descriptor.JupiterTestDescriptor: public org.junit.platform.engine.support.hierarchical.Node$ExecutionMode getExecutionMode() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$DescriptorWrapperOrderer: protected static <ORDERER extends java.lang.Object, WRAPPER extends java.lang.Object> org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$DescriptorWrapperOrderer<ORDERER, WRAPPER> noop() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$MessageGenerator: public abstract java.lang.String generateMessage(int) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.discovery.DiscoverySelectorResolver: public org.junit.jupiter.engine.discovery.DiscoverySelectorResolver() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.discovery.DiscoverySelectorResolver: public void resolveSelectors(org.junit.platform.engine.EngineDiscoveryRequest, org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.execution.NamespaceAwareStore: public <K extends java.lang.Object, V extends java.lang.Object> java.lang.Object getOrComputeIfAbsent(K, java.util.function.Function<K, V>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.execution.NamespaceAwareStore: public <K extends java.lang.Object, V extends java.lang.Object> V getOrComputeIfAbsent(K, java.util.function.Function<K, V>, java.lang.Class<V>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.execution.ParameterResolutionUtils: public org.junit.jupiter.engine.execution.ParameterResolutionUtils() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory: public org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory() [NOT deprecated in 5.x]
|
||||||
|
== junit-jupiter-params: public classes removed: 198, members removed from classes that remain: 5, new classes: 81
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.BooleanString [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Convert [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Copy [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.EnumOptions [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.FixedWidth [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Format [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.HeaderTransformer [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Headers [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.LowerCase [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Nested [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.NullString [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Parsed [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Replace [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Trim [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.UpperCase [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.Validate [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.AnnotationHelper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.AnnotationRegistry [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.FieldMapping [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.MethodDescriptor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.MethodFilter [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.annotations.helpers.TransformedHeader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.AbstractParser [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.AbstractWriter [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ArgumentUtils [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ColumnMap [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.CommonParserSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.CommonSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.CommonWriterSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.Context [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ContextSnapshot [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ContextWrapper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ConversionProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.DataProcessingException [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.DataValidationException [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.DefaultContext [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.DefaultConversionProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.DefaultParsingContext [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.Format [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.IterableResult [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.NoopProcessorErrorHandler [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.NormalizedString [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ParserOutput [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ParsingContext [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ParsingContextSnapshot [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ParsingContextWrapper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ProcessorErrorHandler [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.ResultIterator [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.RetryableErrorHandler [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.RowProcessorErrorHandler [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.StringCache [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.TextParsingException [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.TextWritingException [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.beans.BeanHelper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.beans.PropertyWrapper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.AllIndexesSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.ColumnMapper [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.ColumnMapping [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.ExcludeFieldEnumSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.ExcludeFieldIndexSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.ExcludeFieldNameSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldConversionMapping [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldEnumSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldIndexSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldNameSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.fields.FieldSet [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.AbstractCharInputReader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.BomInput [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.BomInput$BytesProcessedNotification [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.CharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.CharInput [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.CharInputReader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.DefaultCharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.DefaultCharInputReader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.EOFException [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.ElasticCharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.ExpandingCharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.InputAnalysisProcess [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.LineSeparatorDetector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.LookaheadCharInputReader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.NoopCharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.WriterCharAppender [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.input.concurrent.ConcurrentCharInputReader [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.iterators.RecordIterator [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.iterators.RowIterator [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.AbstractRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.BatchedColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.BatchedObjectColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.BeanListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.BeanProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.BeanWriterProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.CompositeRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ConcurrentRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.CustomMatcher [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.InputValueSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MasterDetailListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MasterDetailProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MasterDetailRecord [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MultiBeanListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MultiBeanProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.MultiBeanRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.NoopRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ObjectColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ObjectRowListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ObjectRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.ObjectRowWriterProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.OutputValueSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowPlacement [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowProcessorSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowWriterProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.RowWriterProcessorSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractBatchedColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractBatchedObjectColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractBeanListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractBeanProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractConcurrentProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractInputValueSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractMasterDetailListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractMasterDetailProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractMultiBeanListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractMultiBeanProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractMultiBeanRowProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractObjectColumnProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractObjectListProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractObjectProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.AbstractProcessorSwitch [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.BeanConversionProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.ColumnOrderDependent [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.CompositeProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.NoopProcessor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.processor.core.Processor [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.record.AbstractRecordFactory [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.record.Record [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.record.RecordFactory [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.record.RecordMetaData [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.routine.AbstractRoutines [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.common.routine.InputDimension [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.BigDecimalConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.BigIntegerConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.BooleanConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.ByteConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.CalendarConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.CharacterConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.Conversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.Conversions [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.DateConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.DoubleConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.EnumConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.EnumSelector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.FloatConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.FormattedBigDecimalConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.FormattedConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.FormattedDateConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.IntegerConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.LongConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.LowerCaseConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.NullConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.NullStringConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.NumericConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.ObjectConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.RegexConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.ShortConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.ToStringConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.TrimConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.UpperCaseConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.ValidatedConversion [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.conversions.Validator [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.Csv [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvFormat [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvFormatDetector [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvParser [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvParserSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvRoutines [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvWriter [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.CsvWriterSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.csv.UnescapedQuoteHandling [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FieldAlignment [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthFieldLengths [deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthFields [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthFormat [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthParser [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthParserSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthRoutines [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthWriter [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.fixed.FixedWidthWriterSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvFormat [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvParser [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvParserSettings [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvRoutines [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvWriter [NOT deprecated in 5.x]
|
||||||
|
class org.junit.jupiter.params.shadow.com.univocity.parsers.tsv.TsvWriterSettings [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.params.ResolutionCache$Concurrent: public java.lang.Object resolve(org.junit.jupiter.params.support.ParameterDeclaration, java.util.function.Supplier<java.lang.Object>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.params.aggregator.DefaultArgumentsAccessor: public static org.junit.jupiter.params.aggregator.DefaultArgumentsAccessor create(org.junit.jupiter.api.extension.ExtensionContext, int, java.lang.ClassLoader, java.lang.Object[]) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.params.converter.DefaultArgumentConverter: public static final java.lang.String DEFAULT_LOCALE_CONVERSION_FORMAT_PROPERTY_NAME [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.params.converter.DefaultArgumentConverter: public org.junit.jupiter.params.converter.DefaultArgumentConverter(org.junit.jupiter.api.extension.ExtensionContext) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.jupiter.params.provider.CsvFileSource: public abstract java.lang.String lineSeparator() [NOT deprecated in 5.x]
|
||||||
|
== junit-platform-commons: public classes removed: 2, members removed from classes that remain: 13, new classes: 16
|
||||||
|
class org.junit.platform.commons.util.BlacklistedExceptions [deprecated in 5.x]
|
||||||
|
class org.junit.platform.commons.util.PreconditionViolationException [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.support.ReflectionSupport: public static java.util.Optional<java.lang.Class<?>> loadClass(java.lang.String) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.CollectionUtils: public static <T extends java.lang.Object> java.util.Set<T> toSet(T[]) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.CollectionUtils: public static <T extends java.lang.Object> java.util.stream.Collector<T, ?, java.util.List<T>> toUnmodifiableList() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.KotlinReflectionUtils: public org.junit.platform.commons.util.KotlinReflectionUtils() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ModuleUtils: public org.junit.platform.commons.util.ModuleUtils() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ModuleUtils: public static boolean isJavaPlatformModuleSystemAvailable() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static <T extends java.lang.Object> java.util.Optional<java.lang.Object> readFieldValue(java.lang.Class<T>, java.lang.String, T) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.Optional<java.lang.Object> readFieldValue(java.lang.reflect.Field) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.Optional<java.lang.Object> readFieldValue(java.lang.reflect.Field, java.lang.Object) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.List<java.lang.Object> readFieldValues(java.util.List<java.lang.reflect.Field>, java.lang.Object) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.List<java.lang.Object> readFieldValues(java.util.List<java.lang.reflect.Field>, java.lang.Object, java.util.function.Predicate<java.lang.reflect.Field>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.Optional<java.lang.Class<?>> loadClass(java.lang.String) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.commons.util.ReflectionUtils: public static java.util.Optional<java.lang.Class<?>> loadClass(java.lang.String, java.lang.ClassLoader) [deprecated in 5.x]
|
||||||
|
== junit-platform-engine: public classes removed: 3, members removed from classes that remain: 29, new classes: 36
|
||||||
|
class org.junit.platform.engine.support.filter.ClasspathScanningSupport [deprecated in 5.x]
|
||||||
|
class org.junit.platform.engine.support.hierarchical.SingleTestExecutor [deprecated in 5.x]
|
||||||
|
class org.junit.platform.engine.support.hierarchical.SingleTestExecutor$Executable [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.ConfigurationParameters: public default <T extends java.lang.Object> java.util.Optional<T> get(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.ConfigurationParameters: public abstract int size() [deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.ExecutionRequest: public static org.junit.platform.engine.ExecutionRequest create(org.junit.platform.engine.TestDescriptor, org.junit.platform.engine.EngineExecutionListener, org.junit.platform.engine.ConfigurationParameters, org.junit.platform.engine.OutputDirectoryCreator, org.junit.platform.engine.support.store.NamespacedHierarchicalStore<org.junit.platform.engine.support.store.Namespace>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.UniqueId: public final java.util.Optional<java.lang.String> getEngineId() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.UniqueId: public final java.util.List<org.junit.platform.engine.UniqueId$Segment> getSegments() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.UniqueId: public final org.junit.platform.engine.UniqueId append(java.lang.String, java.lang.String) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.UniqueId: public final org.junit.platform.engine.UniqueId append(org.junit.platform.engine.UniqueId$Segment) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.discovery.MethodSelector: public java.lang.String getMethodParameterTypes() [deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.discovery.NestedMethodSelector: public java.lang.String getMethodParameterTypes() [deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.reporting.ReportEntry: public org.junit.platform.engine.reporting.ReportEntry() [deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.config.PrefixedConfigurationParameters: public <T extends java.lang.Object> java.util.Optional<T> get(java.lang.String, java.util.function.Function<java.lang.String, T>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.config.PrefixedConfigurationParameters: public int size() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.ClassSource: public final java.lang.String getClassName() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.ClassSource: public final java.lang.Class<?> getJavaClass() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.ClassSource: public final java.util.Optional<org.junit.platform.engine.support.descriptor.FilePosition> getPosition() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.ClasspathResourceSource: public final java.util.Optional<org.junit.platform.engine.support.descriptor.FilePosition> getPosition() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.CompositeTestSource: public final java.util.List<org.junit.platform.engine.TestSource> getSources() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.DirectorySource: public final java.net.URI getUri() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.DirectorySource: public final java.io.File getFile() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.FileSource: public final java.net.URI getUri() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.FileSource: public final java.io.File getFile() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.FileSource: public final java.util.Optional<org.junit.platform.engine.support.descriptor.FilePosition> getPosition() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.MethodSource: public final java.lang.String getMethodName() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.MethodSource: public final java.lang.String getMethodParameterTypes() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.MethodSource: public final java.lang.Class<?> getJavaClass() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.MethodSource: public final java.lang.reflect.Method getJavaMethod() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.descriptor.PackageSource: public final java.lang.String getPackageName() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.store.NamespacedHierarchicalStore: public <K extends java.lang.Object, V extends java.lang.Object> java.lang.Object getOrComputeIfAbsent(N, K, java.util.function.Function<K, V>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.engine.support.store.NamespacedHierarchicalStore: public <K extends java.lang.Object, V extends java.lang.Object> V getOrComputeIfAbsent(N, K, java.util.function.Function<K, V>, java.lang.Class<V>) throws org.junit.platform.engine.support.store.NamespacedHierarchicalStoreException [NOT deprecated in 5.x]
|
||||||
|
== junit-platform-launcher: public classes removed: 1, members removed from classes that remain: 5, new classes: 28
|
||||||
|
class org.junit.platform.launcher.listeners.LegacyReportingUtils [deprecated in 5.x]
|
||||||
|
member org.junit.platform.launcher.TestPlan: public void add(org.junit.platform.launcher.TestIdentifier) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.launcher.TestPlan: public java.util.Set<org.junit.platform.launcher.TestIdentifier> getChildren(java.lang.String) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.launcher.core.EngineExecutionOrchestrator: public void execute(org.junit.platform.launcher.core.LauncherDiscoveryResult, org.junit.platform.engine.EngineExecutionListener, org.junit.platform.launcher.TestExecutionListener, org.junit.platform.engine.support.store.NamespacedHierarchicalStore<org.junit.platform.engine.support.store.Namespace>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.launcher.core.EngineExecutionOrchestrator: public void execute(org.junit.platform.launcher.core.LauncherDiscoveryResult, org.junit.platform.engine.EngineExecutionListener, org.junit.platform.engine.support.store.NamespacedHierarchicalStore<org.junit.platform.engine.support.store.Namespace>) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder: public org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder() [deprecated in 5.x]
|
||||||
|
== junit-platform-suite-api: public classes removed: 1, members removed from classes that remain: 0, new classes: 1
|
||||||
|
class org.junit.platform.suite.api.UseTechnicalNames [deprecated in 5.x]
|
||||||
|
== junit-platform-suite-engine: public classes removed: 0, members removed from classes that remain: 0, new classes: 4
|
||||||
|
== junit-platform-testkit: public classes removed: 0, members removed from classes that remain: 3, new classes: 2
|
||||||
|
member org.junit.platform.testkit.engine.EngineTestKit: public static org.junit.platform.testkit.engine.EngineExecutionResults execute(java.lang.String, org.junit.platform.engine.EngineDiscoveryRequest) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.testkit.engine.EngineTestKit: public static org.junit.platform.testkit.engine.EngineExecutionResults execute(org.junit.platform.engine.TestEngine, org.junit.platform.engine.EngineDiscoveryRequest) [deprecated in 5.x]
|
||||||
|
member org.junit.platform.testkit.engine.EngineTestKit$Builder: public org.junit.platform.testkit.engine.EngineTestKit$Builder filters(org.junit.platform.engine.DiscoveryFilter<?>...) [deprecated in 5.x]
|
||||||
|
== junit-vintage-engine: public classes removed: 0, members removed from classes that remain: 4, new classes: 6
|
||||||
|
member org.junit.vintage.engine.descriptor.VintageEngineDescriptor: public java.util.Set<org.junit.platform.engine.TestDescriptor> getModifiableChildren() [NOT deprecated in 5.x]
|
||||||
|
member org.junit.vintage.engine.execution.RunnerExecutor: public org.junit.vintage.engine.execution.RunnerExecutor(org.junit.platform.engine.EngineExecutionListener) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.vintage.engine.execution.VintageExecutor: public org.junit.vintage.engine.execution.VintageExecutor(org.junit.vintage.engine.descriptor.VintageEngineDescriptor, org.junit.platform.engine.EngineExecutionListener, org.junit.platform.engine.ExecutionRequest) [NOT deprecated in 5.x]
|
||||||
|
member org.junit.vintage.engine.execution.VintageExecutor: public void executeAllChildren() [NOT deprecated in 5.x]
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
JUnit 5.14.4
|
||||||
|
FAILED [method] columnLongerThanLimit(String, int) -> CsvParsingException: Failed to parse CSV input configured via @org.junit.jupiter.params.provider.CsvSource(emptyValue="", delimiter...
|
||||||
|
SUCCESSFUL [1] x, 1
|
||||||
|
SUCCESSFUL [2] y, 2
|
||||||
|
SUCCESSFUL [1] apple, 1
|
||||||
|
SUCCESSFUL [2] a,b, 2
|
||||||
|
SUCCESSFUL [3] padded, 3
|
||||||
|
SUCCESSFUL [4] , 4
|
||||||
|
SUCCESSFUL [5] null, 5
|
||||||
|
SUCCESSFUL [6] NIL, 6
|
||||||
|
SUCCESSFUL [7] it's, 7
|
||||||
|
SUCCESSFUL [8] "dq", 8
|
||||||
|
SUCCESSFUL [1] name = widget, qty = 4
|
||||||
|
SUCCESSFUL [2] name = multi word, qty = 5
|
||||||
|
SUCCESSFUL [1] one, 1
|
||||||
|
SUCCESSFUL [2] two, with comma, 2
|
||||||
|
SUCCESSFUL [3] line
|
||||||
|
break, 3
|
||||||
|
SUCCESSFUL [1] a
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
JUnit 6.1.3
|
||||||
|
FAILED [method] columnLongerThanLimit(String, int) -> CsvParsingException: Failed to parse CSV input configured via @org.junit.jupiter.params.provider.CsvSource(emptyValue="", delimiter...
|
||||||
|
SUCCESSFUL [1] "x", "1"
|
||||||
|
SUCCESSFUL [2] "y", "2"
|
||||||
|
SUCCESSFUL [1] "apple", "1"
|
||||||
|
SUCCESSFUL [2] "a,b", "2"
|
||||||
|
SUCCESSFUL [3] "padded", "3"
|
||||||
|
SUCCESSFUL [4] "", "4"
|
||||||
|
SUCCESSFUL [5] null, "5"
|
||||||
|
SUCCESSFUL [6] "NIL", "6"
|
||||||
|
SUCCESSFUL [7] "it's", "7"
|
||||||
|
SUCCESSFUL [8] "\"dq\"", "8"
|
||||||
|
SUCCESSFUL [1] name = "widget", qty = "4"
|
||||||
|
SUCCESSFUL [2] name = "multi word", qty = "5"
|
||||||
|
SUCCESSFUL [1] "one", "1"
|
||||||
|
SUCCESSFUL [2] "two, with comma", "2"
|
||||||
|
SUCCESSFUL [3] "line\nbreak", "3"
|
||||||
|
SUCCESSFUL [1] "a"
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
JUnit 5.14.4
|
||||||
|
SUCCESSFUL stillRuns
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
JUnit 6.1.3
|
||||||
|
SUCCESSFUL stillRuns
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
JUnit 5.14.4, compiling OldApis.java
|
||||||
|
src/compat/OldApis.java:1: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:2: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:3: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:4: error: package org.junit.jupiter.api.io does not exist
|
||||||
|
import org.junit.jupiter.api.io.TempDir;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:5: error: package org.junit.platform.commons.support does not exist
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:8: error: cannot find symbol
|
||||||
|
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
|
||||||
|
^
|
||||||
|
symbol: class TestMethodOrder
|
||||||
|
src/compat/OldApis.java:8: error: package MethodOrderer does not exist
|
||||||
|
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:11: error: cannot find symbol
|
||||||
|
@Test
|
||||||
|
^
|
||||||
|
symbol: class Test
|
||||||
|
location: class OldApis
|
||||||
|
src/compat/OldApis.java:13: error: cannot find symbol
|
||||||
|
Object loaded = ReflectionSupport.loadClass("java.lang.String");
|
||||||
|
^
|
||||||
|
symbol: variable ReflectionSupport
|
||||||
|
location: class OldApis
|
||||||
|
src/compat/OldApis.java:14: error: cannot find symbol
|
||||||
|
String property = TempDir.SCOPE_PROPERTY_NAME;
|
||||||
|
^
|
||||||
|
symbol: variable TempDir
|
||||||
|
location: class OldApis
|
||||||
|
10 errors
|
||||||
|
javac exit status: 1
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
JUnit 6.1.3, compiling OldApis.java
|
||||||
|
src/compat/OldApis.java:1: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:2: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:3: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:4: error: package org.junit.jupiter.api.io does not exist
|
||||||
|
import org.junit.jupiter.api.io.TempDir;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:5: error: package org.junit.platform.commons.support does not exist
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:8: error: cannot find symbol
|
||||||
|
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
|
||||||
|
^
|
||||||
|
symbol: class TestMethodOrder
|
||||||
|
src/compat/OldApis.java:8: error: package MethodOrderer does not exist
|
||||||
|
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
|
||||||
|
^
|
||||||
|
src/compat/OldApis.java:11: error: cannot find symbol
|
||||||
|
@Test
|
||||||
|
^
|
||||||
|
symbol: class Test
|
||||||
|
location: class OldApis
|
||||||
|
src/compat/OldApis.java:13: error: cannot find symbol
|
||||||
|
Object loaded = ReflectionSupport.loadClass("java.lang.String");
|
||||||
|
^
|
||||||
|
symbol: variable ReflectionSupport
|
||||||
|
location: class OldApis
|
||||||
|
src/compat/OldApis.java:14: error: cannot find symbol
|
||||||
|
String property = TempDir.SCOPE_PROPERTY_NAME;
|
||||||
|
^
|
||||||
|
symbol: variable TempDir
|
||||||
|
location: class OldApis
|
||||||
|
10 errors
|
||||||
|
javac exit status: 1
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
JUnit 5.14.4, compiling FixedApis.java
|
||||||
|
src/compat/FixedApis.java:1: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:2: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:3: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:4: error: package org.junit.platform.commons.support does not exist
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:7: error: cannot find symbol
|
||||||
|
@TestMethodOrder(MethodOrderer.MethodName.class)
|
||||||
|
^
|
||||||
|
symbol: class TestMethodOrder
|
||||||
|
src/compat/FixedApis.java:7: error: package MethodOrderer does not exist
|
||||||
|
@TestMethodOrder(MethodOrderer.MethodName.class)
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:10: error: cannot find symbol
|
||||||
|
@Test
|
||||||
|
^
|
||||||
|
symbol: class Test
|
||||||
|
location: class FixedApis
|
||||||
|
src/compat/FixedApis.java:12: error: cannot find symbol
|
||||||
|
Object loaded = ReflectionSupport.tryToLoadClass("java.lang.String").toOptional().orElseThrow();
|
||||||
|
^
|
||||||
|
symbol: variable ReflectionSupport
|
||||||
|
location: class FixedApis
|
||||||
|
8 errors
|
||||||
|
javac exit status: 1
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
JUnit 6.1.3, compiling FixedApis.java
|
||||||
|
src/compat/FixedApis.java:1: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:2: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:3: error: package org.junit.jupiter.api does not exist
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:4: error: package org.junit.platform.commons.support does not exist
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:7: error: cannot find symbol
|
||||||
|
@TestMethodOrder(MethodOrderer.MethodName.class)
|
||||||
|
^
|
||||||
|
symbol: class TestMethodOrder
|
||||||
|
src/compat/FixedApis.java:7: error: package MethodOrderer does not exist
|
||||||
|
@TestMethodOrder(MethodOrderer.MethodName.class)
|
||||||
|
^
|
||||||
|
src/compat/FixedApis.java:10: error: cannot find symbol
|
||||||
|
@Test
|
||||||
|
^
|
||||||
|
symbol: class Test
|
||||||
|
location: class FixedApis
|
||||||
|
src/compat/FixedApis.java:12: error: cannot find symbol
|
||||||
|
Object loaded = ReflectionSupport.tryToLoadClass("java.lang.String").toOptional().orElseThrow();
|
||||||
|
^
|
||||||
|
symbol: variable ReflectionSupport
|
||||||
|
location: class FixedApis
|
||||||
|
8 errors
|
||||||
|
javac exit status: 1
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.ankurm</groupId>
|
||||||
|
<artifactId>junit-6-migration</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<name>junit-6-migration</name>
|
||||||
|
<description>The same tests run on JUnit 5.14.4 and JUnit 6.1.3, plus an API diff of the two releases</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.release>17</maven.compiler.release>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<!-- default is the new version; -Pjunit5 switches the whole build to 5.14.4 -->
|
||||||
|
<junit.version>6.1.3</junit.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>junit5</id>
|
||||||
|
<properties>
|
||||||
|
<junit.version>5.14.4</junit.version>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>junit6</id>
|
||||||
|
<properties>
|
||||||
|
<junit.version>6.1.3</junit.version>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit</groupId>
|
||||||
|
<artifactId>junit-bom</artifactId>
|
||||||
|
<version>${junit.version}</version>
|
||||||
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.platform</groupId>
|
||||||
|
<artifactId>junit-platform-launcher</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.vintage</groupId>
|
||||||
|
<artifactId>junit-vintage-engine</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.13.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>3.6.0</version>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<junit.version>${junit.version}</junit.version>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
Executable
+159
@@ -0,0 +1,159 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Compare the public API of JUnit 5.14.4 / Platform 1.14.4 against JUnit 6.1.3 straight from the jars.
|
||||||
|
|
||||||
|
Writes output/01-versions-and-baseline.txt and output/02-removed-api.txt.
|
||||||
|
Needs a JDK (javap) on PATH or via JAVA_HOME, and access to Maven Central.
|
||||||
|
"""
|
||||||
|
import collections
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import time
|
||||||
|
import urllib.error
|
||||||
|
import urllib.request
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
ROOT = pathlib.Path(__file__).resolve().parent.parent
|
||||||
|
JARS = ROOT / "target" / "jars"
|
||||||
|
OUT = ROOT / "output"
|
||||||
|
JAVAP = os.path.join(os.environ["JAVA_HOME"], "bin", "javap") if os.environ.get("JAVA_HOME") else "javap"
|
||||||
|
|
||||||
|
OLD, NEW, PLATFORM_OLD = "5.14.4", "6.1.3", "1.14.4"
|
||||||
|
ARTIFACTS = [
|
||||||
|
("jupiter", "junit-jupiter-api"), ("jupiter", "junit-jupiter-engine"), ("jupiter", "junit-jupiter-params"),
|
||||||
|
("platform", "junit-platform-commons"), ("platform", "junit-platform-engine"), ("platform", "junit-platform-launcher"),
|
||||||
|
("platform", "junit-platform-suite-api"), ("platform", "junit-platform-suite-engine"), ("platform", "junit-platform-testkit"),
|
||||||
|
("vintage", "junit-vintage-engine"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def version_for(group, which):
|
||||||
|
if which == "new":
|
||||||
|
return NEW
|
||||||
|
return PLATFORM_OLD if group == "platform" else OLD
|
||||||
|
|
||||||
|
|
||||||
|
def fetch(url, dest):
|
||||||
|
if dest.exists():
|
||||||
|
return
|
||||||
|
for _ in range(8):
|
||||||
|
try:
|
||||||
|
with urllib.request.urlopen(url) as r:
|
||||||
|
dest.write_bytes(r.read())
|
||||||
|
return
|
||||||
|
except urllib.error.HTTPError as e:
|
||||||
|
if e.code != 429:
|
||||||
|
raise
|
||||||
|
time.sleep(4)
|
||||||
|
raise RuntimeError("rate limited: " + url)
|
||||||
|
|
||||||
|
|
||||||
|
def jar(group, artifact, which):
|
||||||
|
v = version_for(group, which)
|
||||||
|
dest = JARS / f"{artifact}-{v}.jar"
|
||||||
|
fetch(f"https://repo1.maven.org/maven2/org/junit/{group}/{artifact}/{v}/{artifact}-{v}.jar", dest)
|
||||||
|
return dest
|
||||||
|
|
||||||
|
|
||||||
|
def classes(path):
|
||||||
|
with zipfile.ZipFile(path) as z:
|
||||||
|
return sorted(n[:-6].replace("/", ".") for n in z.namelist()
|
||||||
|
if n.endswith(".class") and not n.endswith("module-info.class") and "META-INF" not in n)
|
||||||
|
|
||||||
|
|
||||||
|
def major(path):
|
||||||
|
with zipfile.ZipFile(path) as z:
|
||||||
|
name = next(n for n in z.namelist()
|
||||||
|
if n.endswith(".class") and not n.endswith("module-info.class") and "META-INF" not in n)
|
||||||
|
b = z.read(name)
|
||||||
|
return int.from_bytes(b[6:8], "big")
|
||||||
|
|
||||||
|
|
||||||
|
MEMBER = re.compile(r"^ ((?:public|protected)[^;]*);$")
|
||||||
|
|
||||||
|
|
||||||
|
def dump(path):
|
||||||
|
"""One javap call per jar. Returns {class: (is_public, class_deprecated, {member signature: deprecated?})}."""
|
||||||
|
names = [c for c in classes(path) if ".internal." not in c]
|
||||||
|
result = {}
|
||||||
|
# javap takes many class names at once; split the list to keep the command line short
|
||||||
|
for i in range(0, len(names), 150):
|
||||||
|
chunk = names[i:i + 150]
|
||||||
|
p = subprocess.run([JAVAP, "-v", "-protected", "-cp", str(path)] + chunk, capture_output=True, text=True)
|
||||||
|
cur_cls = None
|
||||||
|
for block in re.split(r"(?m)^Classfile ", p.stdout)[1:]:
|
||||||
|
lines = block.splitlines()
|
||||||
|
header = lines[0]
|
||||||
|
cls = re.search(r"!/(.*)\.class", header).group(1).replace("/", ".")
|
||||||
|
public = False
|
||||||
|
cls_dep = False
|
||||||
|
members, cur, in_pool, seen_flags = {}, None, False, False
|
||||||
|
for line in lines[1:]:
|
||||||
|
if not seen_flags and line.startswith(" flags:"):
|
||||||
|
public = "ACC_PUBLIC" in line
|
||||||
|
seen_flags = True
|
||||||
|
if line.startswith("Constant pool:"):
|
||||||
|
in_pool = True
|
||||||
|
continue
|
||||||
|
if in_pool:
|
||||||
|
if line.startswith("{"):
|
||||||
|
in_pool = False
|
||||||
|
continue
|
||||||
|
m = MEMBER.match(line)
|
||||||
|
if m:
|
||||||
|
cur = " ".join(m.group(1).split())
|
||||||
|
members[cur] = False
|
||||||
|
continue
|
||||||
|
if line.strip() == "Deprecated: true":
|
||||||
|
if cur is None:
|
||||||
|
cls_dep = True
|
||||||
|
else:
|
||||||
|
members[cur] = True
|
||||||
|
if line.startswith("}"):
|
||||||
|
cur = None
|
||||||
|
if re.search(r"^Deprecated: true", block, re.M):
|
||||||
|
cls_dep = True
|
||||||
|
result[cls] = (public, cls_dep, members)
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
JARS.mkdir(parents=True, exist_ok=True)
|
||||||
|
OUT.mkdir(parents=True, exist_ok=True)
|
||||||
|
versions = [f"{'artifact':<34} {'5.x jar':<28} {'6.x jar':<28}"]
|
||||||
|
removed_classes = collections.defaultdict(list)
|
||||||
|
removed_members = collections.defaultdict(list)
|
||||||
|
added = collections.Counter()
|
||||||
|
for group, art in ARTIFACTS:
|
||||||
|
old, new = jar(group, art, "old"), jar(group, art, "new")
|
||||||
|
mo, mn = major(old), major(new)
|
||||||
|
versions.append(f"{art:<34} {version_for(group, 'old')} (Java {mo - 44}){'':<9} {NEW} (Java {mn - 44})")
|
||||||
|
do, dn = dump(old), dump(new)
|
||||||
|
co, cn = set(classes(old)), set(classes(new))
|
||||||
|
for c in sorted(co - cn):
|
||||||
|
if c in do and do[c][0]:
|
||||||
|
removed_classes[art].append((c, do[c][1]))
|
||||||
|
added[art] = len(cn - co)
|
||||||
|
for c in sorted(do):
|
||||||
|
if c in dn and do[c][0]:
|
||||||
|
for sig, dep in do[c][2].items():
|
||||||
|
if sig not in dn[c][2]:
|
||||||
|
removed_members[art].append((c, sig, dep))
|
||||||
|
(OUT / "01-versions-and-baseline.txt").write_text("\n".join(versions) + "\n")
|
||||||
|
lines = []
|
||||||
|
for _, art in ARTIFACTS:
|
||||||
|
lines.append(f"== {art}: public classes removed: {len(removed_classes[art])}, "
|
||||||
|
f"members removed from classes that remain: {len(removed_members[art])}, "
|
||||||
|
f"new classes: {added[art]}")
|
||||||
|
for c, dep in removed_classes[art]:
|
||||||
|
lines.append(f" class {c} [{'deprecated in 5.x' if dep else 'NOT deprecated in 5.x'}]")
|
||||||
|
for c, sig, dep in removed_members[art]:
|
||||||
|
lines.append(f" member {c}: {sig} [{'deprecated in 5.x' if dep else 'NOT deprecated in 5.x'}]")
|
||||||
|
(OUT / "02-removed-api.txt").write_text("\n".join(lines) + "\n")
|
||||||
|
print("\n".join(versions))
|
||||||
|
print("\n".join(l for l in lines if l.startswith("==")))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Compiles src/compat/OldApis.java against the JUnit 5.14.4 jars and then the 6.1.3 jars and records the compiler's answer.
|
||||||
|
# Run scripts/api_diff.py first: it downloads the jars into target/jars.
|
||||||
|
set -uo pipefail
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
unset JAVA_TOOL_OPTIONS
|
||||||
|
mkdir -p output target/compat
|
||||||
|
J=target/jars
|
||||||
|
[ -f "$J/apiguardian-api-1.1.2.jar" ] || curl -sSf --retry 5 -o "$J/apiguardian-api-1.1.2.jar" \
|
||||||
|
https://repo1.maven.org/maven2/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar
|
||||||
|
compile() { # $1 = label, $2 = jupiter version, $3 = platform version
|
||||||
|
for src in OldApis:05-old-apis FixedApis:06-fixed-apis; do
|
||||||
|
{
|
||||||
|
echo "JUnit $2, compiling ${src%%:*}.java"
|
||||||
|
javac -Xlint:deprecation --release 17 -d "target/compat/$1" \
|
||||||
|
-cp "$J/junit-jupiter-api-$2.jar:$J/junit-platform-commons-$3.jar:$J/apiguardian-api-1.1.2.jar" "src/compat/${src%%:*}.java" 2>&1 \
|
||||||
|
| sed -e '/^Picked up/d'
|
||||||
|
echo "javac exit status: ${PIPESTATUS[0]}"
|
||||||
|
} > "output/${src##*:}-$2.txt"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
compile junit5 5.14.4 1.14.4
|
||||||
|
compile junit6 6.1.3 6.1.3
|
||||||
Executable
+11
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Regenerates every file in output/. Needs JDK 17+ (built with 25), Maven 3.9 and access to Maven Central.
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")/.."
|
||||||
|
unset JAVA_TOOL_OPTIONS
|
||||||
|
|
||||||
|
python3 scripts/api_diff.py >/dev/null # 01, 02: jar-to-jar API diff (also downloads the jars)
|
||||||
|
mvn -B -q clean test -Pjunit5 # 03, 04 on JUnit 5.14.4
|
||||||
|
mvn -B -q clean test -Pjunit6 # 03, 04 on JUnit 6.1.3
|
||||||
|
./scripts/compile-old-apis.sh # 05, 06
|
||||||
|
ls -1 output
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
|
||||||
|
/** The replacements for OldApis. This compiles on 5.14.4 and on 6.1.3, so make these changes before you upgrade. */
|
||||||
|
@TestMethodOrder(MethodOrderer.MethodName.class)
|
||||||
|
class FixedApis {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void usesTheReplacements() {
|
||||||
|
Object loaded = ReflectionSupport.tryToLoadClass("java.lang.String").toOptional().orElseThrow();
|
||||||
|
System.out.println(loaded);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import org.junit.jupiter.api.MethodOrderer;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestMethodOrder;
|
||||||
|
import org.junit.jupiter.api.io.TempDir;
|
||||||
|
import org.junit.platform.commons.support.ReflectionSupport;
|
||||||
|
|
||||||
|
/** Compiled by scripts/compile-old-apis.sh against each JUnit version. Not part of the Maven build. */
|
||||||
|
@TestMethodOrder(MethodOrderer.Alphanumeric.class)
|
||||||
|
class OldApis {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void usesRemovedApis() {
|
||||||
|
Object loaded = ReflectionSupport.loadClass("java.lang.String");
|
||||||
|
String property = TempDir.SCOPE_PROPERTY_NAME;
|
||||||
|
System.out.println(loaded + " " + property);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
package com.ankurm.junitmigration;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.platform.engine.TestExecutionResult;
|
||||||
|
import org.junit.platform.launcher.TestExecutionListener;
|
||||||
|
import org.junit.platform.launcher.TestIdentifier;
|
||||||
|
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder;
|
||||||
|
import org.junit.platform.launcher.core.LauncherFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs the same probe classes on whichever JUnit is on the class path and writes what happened to
|
||||||
|
* output/NN-name-<version>.txt. The two versions are meant to give different answers in places, so this
|
||||||
|
* test records them instead of asserting them. It does assert that the probes ran at all.
|
||||||
|
*/
|
||||||
|
class BehaviourTest {
|
||||||
|
|
||||||
|
private static final String VERSION = System.getProperty("junit.version", "unknown");
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void csvBehaviour() throws IOException {
|
||||||
|
List<String> lines = run(CsvProbe.class);
|
||||||
|
write("03-csv-behaviour", lines);
|
||||||
|
assertTrue(lines.size() > 10, "probe produced results");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void vintageStillRunsJUnit4() throws IOException {
|
||||||
|
List<String> lines = run(LegacyJUnit4Test.class);
|
||||||
|
write("04-vintage-junit4", lines);
|
||||||
|
assertTrue(lines.stream().anyMatch(l -> l.contains("stillRuns") && l.contains("SUCCESSFUL")), "junit 4 test ran");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> run(Class<?> probe) {
|
||||||
|
List<String> lines = new ArrayList<>();
|
||||||
|
var request = LauncherDiscoveryRequestBuilder.request().selectors(selectClass(probe)).build();
|
||||||
|
var launcher = LauncherFactory.create();
|
||||||
|
launcher.execute(request, new TestExecutionListener() {
|
||||||
|
@Override
|
||||||
|
public void executionSkipped(TestIdentifier id, String reason) {
|
||||||
|
lines.add(String.format("%-11s %s -> %s", "SKIPPED", id.getDisplayName(), reason));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void executionFinished(TestIdentifier id, TestExecutionResult result) {
|
||||||
|
// a parameterized method is a container: report it too when it fails as a whole
|
||||||
|
if (!id.isTest() && result.getStatus() == TestExecutionResult.Status.SUCCESSFUL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!id.isTest() && id.getParentId().isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String outcome = result.getStatus().name();
|
||||||
|
String message = result.getThrowable().map(t -> " -> " + t.getClass().getSimpleName() + ": "
|
||||||
|
+ firstLine(t.getMessage())).orElse("");
|
||||||
|
lines.add(String.format("%-11s %s%s%s", outcome, id.isTest() ? "" : "[method] ", id.getDisplayName(), message));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String firstLine(String s) {
|
||||||
|
if (s == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String one = s.lines().findFirst().orElse("");
|
||||||
|
return one.length() > 110 ? one.substring(0, 110) + "..." : one;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void write(String name, List<String> lines) throws IOException {
|
||||||
|
Path dir = Path.of("output");
|
||||||
|
Files.createDirectories(dir);
|
||||||
|
List<String> out = new ArrayList<>();
|
||||||
|
out.add("JUnit " + VERSION);
|
||||||
|
out.addAll(lines);
|
||||||
|
Files.write(dir.resolve(name + "-" + VERSION + ".txt"), out);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.ankurm.junitmigration;
|
||||||
|
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.CsvFileSource;
|
||||||
|
import org.junit.jupiter.params.provider.CsvSource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Not run by Surefire (the name does not end in Test). {@link BehaviourTest} launches it through the
|
||||||
|
* JUnit Platform Launcher and records what each invocation was called and whether it passed, on whichever
|
||||||
|
* JUnit version is on the class path.
|
||||||
|
*/
|
||||||
|
class CsvProbe {
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource({
|
||||||
|
"apple, 1",
|
||||||
|
"'a,b', 2",
|
||||||
|
" padded , 3",
|
||||||
|
"'', 4",
|
||||||
|
", 5",
|
||||||
|
"NIL, 6",
|
||||||
|
"'it''s', 7",
|
||||||
|
"\"dq\", 8"
|
||||||
|
})
|
||||||
|
void basicRows(String name, int n) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource(value = {"x;1", "y;2"}, delimiter = ';', useHeadersInDisplayName = false)
|
||||||
|
void customDelimiter(String name, int n) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource(textBlock = """
|
||||||
|
name, qty
|
||||||
|
widget, 4
|
||||||
|
'multi word', 5
|
||||||
|
""", useHeadersInDisplayName = true)
|
||||||
|
void textBlockWithHeader(String name, int qty) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource(value = {"a,b,c"})
|
||||||
|
void tooManyColumnsForParameters(String first) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvSource(value = {"1234567890,1"}, maxCharsPerColumn = 5)
|
||||||
|
void columnLongerThanLimit(String value, int n) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@ParameterizedTest
|
||||||
|
@CsvFileSource(resources = "/probe.csv", numLinesToSkip = 1)
|
||||||
|
void fileRows(String name, int n) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.ankurm.junitmigration;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/** A JUnit 4 test. It is discovered by the Vintage engine, not by Jupiter. */
|
||||||
|
public class LegacyJUnit4Test {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stillRuns() {
|
||||||
|
assertEquals(4, 2 + 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
name,n
|
||||||
|
one,1
|
||||||
|
"two, with comma",2
|
||||||
|
"line
|
||||||
|
break",3
|
||||||
|
Reference in New Issue
Block a user