[
https://issues.apache.org/jira/browse/CASSANDRA-16630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17447538#comment-17447538
]
Aleksei Zotov commented on CASSANDRA-16630:
-------------------------------------------
[~mck] [~e.dimitrova]
I made testing for "brief" formatter too. Their formats are a bit different as
well:
# "Testsuite" vs "Testcase" spelling
# Slightly different way of printing stats
# Non-truncated stack trace (as I mentioned previously for "xml" formatter)
# Different order of printing stderr/stdout (before/after test summary)
Before (JUnit 4):
{code:java}
[junit-timeout] Testsuite: org.apache.cassandra.Junit4SampleTest-mytag
[junit-timeout] Testsuite: org.apache.cassandra.Junit4SampleTest-mytag Tests
run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.128 sec
[junit-timeout]
[junit-timeout] ------------- Standard Output ---------------
[junit-timeout] CUSTOM StdOut
[junit-timeout] ------------- ---------------- ---------------
[junit-timeout] ------------- Standard Error -----------------
[junit-timeout] CUSTOM StdErr
[junit-timeout] ------------- ---------------- ---------------
[junit-timeout] Testcase:
testFailure(org.apache.cassandra.Junit4SampleTest)-mytag: FAILED
[junit-timeout] Expected failure
[junit-timeout] junit.framework.AssertionFailedError: Expected failure
[junit-timeout] at
org.apache.cassandra.Junit4SampleTest.testFailure(Junit4SampleTest.java:39)
[junit-timeout]
[junit-timeout]
[junit-timeout] Test org.apache.cassandra.Junit4SampleTest FAILED {code}
Before (JUnit 5):
{code:java}
[junitlauncher] Running org.apache.cassandra.Junit4SampleTest
[junitlauncher] Testcase: org.apache.cassandra.Junit4SampleTest-mytag
[junitlauncher] Test: testFailure-mytag took 10 milli sec(s) FAILED: Expected
failure
[junitlauncher] java.lang.AssertionError: Expected failure
[junitlauncher] at org.junit.Assert.fail(Assert.java:89)
[junitlauncher] at
org.apache.cassandra.Junit4SampleTest.testFailure(Junit4SampleTest.java:39)
[junitlauncher] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[junitlauncher] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[junitlauncher] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junitlauncher] at java.lang.reflect.Method.invoke(Method.java:498)
[junitlauncher] at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
[junitlauncher] at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[junitlauncher] at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
[junitlauncher] at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[junitlauncher] at
org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
[junitlauncher] at
org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
[junitlauncher] at
org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
[junitlauncher] at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
[junitlauncher] at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
[junitlauncher] at
org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
[junitlauncher] at
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
[junitlauncher] at
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
[junitlauncher] at
org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
[junitlauncher] at
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
[junitlauncher] at
org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
[junitlauncher] at
org.junit.runners.ParentRunner.run(ParentRunner.java:413)
[junitlauncher] at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
[junitlauncher] at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
[junitlauncher] at
org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:43)
[junitlauncher] at
java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
[junitlauncher] at
java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
[junitlauncher] at
java.util.Iterator.forEachRemaining(Iterator.java:116)
[junitlauncher] at
java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
[junitlauncher] at
java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
[junitlauncher] at
java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
[junitlauncher] at
java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
[junitlauncher] at
java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
[junitlauncher] at
java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[junitlauncher] at
java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
[junitlauncher] at
org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:82)
[junitlauncher] at
org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:73)
[junitlauncher] at
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
[junitlauncher] at
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
[junitlauncher] at
org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
[junitlauncher] at
org.apache.tools.ant.taskdefs.optional.junitlauncher.LauncherSupport.launch(LauncherSupport.java:144)
[junitlauncher] at
org.apache.tools.ant.taskdefs.optional.junitlauncher.StandaloneLauncher.main(StandaloneLauncher.java:114)
[junitlauncher]
[junitlauncher] Tests run: 2, Failures: 1, Skipped: 0, Aborted: 0, Time
elapsed: 23 milli sec(s)
[junitlauncher] ------------- Standard Output ---------------
[junitlauncher] CUSTOM StdOut
[junitlauncher] ------------- ---------------- ---------------
[junitlauncher] ------------- Standard Error ---------------
[junitlauncher] CUSTOM StdErr
[junitlauncher] ------------- ---------------- ---------------{code}
As per my understanding these changes in the output format should affect
nothing, but your expertise here would be very helpful.
> Migrate to JUnit5
> -----------------
>
> Key: CASSANDRA-16630
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16630
> Project: Cassandra
> Issue Type: Improvement
> Components: Test/unit
> Reporter: Aleksei Zotov
> Assignee: Aleksei Zotov
> Priority: Low
> Time Spent: 10m
> Remaining Estimate: 0h
>
> h3. Overview
> Currently C* uses JUnit4 (version 4.12) which is obsolete. There is a newer
> version 4.13.2 which we could update to. However, JUnit4 is generally
> considered to be outdated and it is reasonable to migrate to JUnit5.
> Despite of having a syntax sugar in JUnit5 (assertThrow, lamda's support,
> ect), there are no blockers that push us to move from JUnit4. The main
> motivation for this initiative is rule of thumb to use up-to-date versions of
> the dependencies.
> Obviously this change is not backward compatible with the open PRs and
> previous C* versions. Therefore, it will require an additional effort for
> backporting the changes and updating PRs that have tests. However, I believe
> it should not be a blocker for this initiative.
> h3. Scope (preliminary list)
> # change JUnit4 to JUnit5 dependencies and make necessary changes in ant
> tasks (https://ant.apache.org/manual/Tasks/junitlauncher.html)
> # update syntax in all tests (imports, Before/After annotations, etc)
> # update parameterized tests
> # create a new version of {{OrderedJUnit4ClassRunner}} and update
> corresponding tests
> # update tests that use {{BMUnitRunner}} (as per
> https://developer.jboss.org/docs/DOC-52953 it supports JUnit5)
> # update tests with {{@Rule}}
> # update tests with expected exceptions
> # update {{JStackJUnitTask}}
> # update formatters
> # create a separate ticket to migrate to {{ant-junitlauncher-1.10.11}} (once
> it is released) and simplify {{JStackJUnitTask}} after
> https://github.com/apache/ant/pull/147
> h3. Order of operations
> In order to make the transition more smooth we want to use a phased approach:
> # migrate to JUnit5 with [Vintage
> Engine|https://junit.org/junit5/docs/current/user-guide/#dependency-metadata-junit-vintage],
> so all JUnit4 tests work as is
> # update tests in a few bunches (to not have a huge single PR with numerous
> conflicts)
> # disable (remove dependency) Vintage Engine, so only JUnit5 tests work
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]