Concordion Changelog

What's new in Concordion 4.0.1

Jul 16, 2023
  • Bug Fixes:
  • Fixed issue #355 when using Concordion commands on table rows with Markdown specifications
  • Build Updates:
  • Gradle has been updated to Gradle 8.2 to support JDK20.
  • Updated gradle plugins
  • Fixed gradle deprecation warnings

New in Concordion 4.0.0 (Jul 2, 2023)

  • New Features:
  • Concordion now supports JUnit5 Jupiter!!!
  • To use it, just replace @RunWith(ConcordionRunner.class) with @ConcordionFixture in your fixture classes.
  • If you're using the concordion:run command with JUnit 4 specifications, you should also add junit-vintage-engine to your build file. For example:
  • testRuntimeOnly('org.junit.vintage:junit-vintage-engine') with Gradle, or
  • <dependency>
  • <groupId>org.junit.vintage</groupId>
  • <artifactId>junit-vintage-engine</artifactId>
  • <version>5.9.3</version>
  • <scope>test</scope>
  • </dependency>
  • with Maven.
  • It's been a very long road to get here, starting with the work of @tenwit and @drtimwright.
  • Last year, @lorenzodee took the bull by the horns and developed a ConcordionTestEngine for JUnit 5. The work he has done is excellent! Sorry for the delay in adding the final touches over the last few months.
  • While we continue to support JUnit 4 fixtures with the JUnit Vintage runner, JUnit 3 is no longer supported.

New in Concordion 3.2.0 (May 28, 2023)

  • New Features:
  • Now uses JUnit5 with the Vintage engine, which provides a TestEngine for running JUnit 3 and JUnit 4 based tests. This is a step towards implementing a JUnit5 Jupiter engine in the upcoming Concordion v4.0.0. There is a small performance penalty since we now need to have a 2-pass build of Concordion to discover the examples before running the tests. Thanks to @lorenzodee for the great work in developing this and the Jupiter engine!
  • Bug Fixes:
  • Fixed ResourceFinder which was failing on Windows.
  • Cleaned up deprecated methods.
  • Build Updates:
  • Gradle has been updated to Gradle 7.5 to support JDK17.
  • git-publish plugin has been updated to 3.0.1.

New in Concordion 3.1.3 (Jul 9, 2021)

  • Fix #285 "URI is not heirarchical" when using @ConcordionResources with JDK9+

New in Concordion 3.1.2 (Jun 24, 2021)

  • Additional dependencies added as compile rather than runtime dependencies (api rather than implementation in Gradle):
  • flexmark
  • flexmark-ext-gfm-strikethrough
  • flexmark-ext-tables
  • xom

New in Concordion 3.1.1 (Jun 20, 2021)

  • Concordion 3.1.0 exposes JUnit as a runtime rather than a compile dependency. Users will need to add JUnit as a dependency to their build scripts. In Concordion 3.1.1 it reverts to being a compile dependency. Fixes #331.

New in Concordion 3.0.1 (Oct 9, 2020)

  • Fixed:
  • Unable to format commands as bold text

New in Concordion 2.1.1 (Sep 15, 2017)

  • The new features are:
  • Fixed issue with exception handing in extensions
  • Allow ConcordionRunner extended by other frameworks be usable as well
  • Enable usage of third party SpecificationLocator objects
  • Internal Changes:
  • The constructor of Internal class FixtureRunner takes an additional parameter of SpecificationLocator. This is reflected in the JUnit3 and JUnit4 support, and may affect users who are implementing their own runners.
  • Integrated CLAHub for contributor license agreements
  • Added Jacoco to build.gradle
  • Moved specifications to a common folder so we can re-use across Java and .NET implementations
  • Modified Travis build to use openjdk7 and removed openjdk6

New in Concordion 1.5.1 (Jul 30, 2015)

  • Improved JUnit integration and documentation, including support for the JUnit @Rule and @ClassRule annotations
  • Updated to Gradle 2.4
  • Fixed resource leaks in FileTarget
  • Updated ExtensionConfiguration spec with combined config example

New in Concordion 1.5.0 (May 11, 2015)

  • New features:
  • To support parallel running of specifications, a new RunStrategy interface, and a withRunStrategy extension method allow different strategies for executing the concordion:run command. See the ParallelRunExtension to run specifications in parallel.
  • When using the concordion:run command, test result totals are now aggregated up from the callee test to the caller test. For example, the main Concordion specification suite now displays the following output:
  • By default, the totals show on standard output. If you also want the totals to show in your specification, see the new Run Totals Extension.
  • Specification Updates:
  • New specification for existing assertEquals comparison of boolean values.
  • The Command specification now references the echo command specification.
  • Tests jar:
  • A tests jar has been published to Maven Central, containing the Concordion test code. This is primarily for extension developers so that they don't need to duplicate the TestRig code.
  • Notes for developers extending the Concordion code base
  • New test folder:
  • The src/test-dummies folder contains tests that are used by other tests, and are not expected to be executed directly. Some of these tests are set to fail.
  • Since this is a new folder, you may need to refresh your source folders in your IDE to add it to the classpath. For example in Eclipse, right click on the project and select Gradle > Refresh Source Folders.
  • Aggregating results from Custom Test Runners
  • By default, the test result aggregation works when the callee test is a JUnit3 or JUnit4 Concordion test. Should you be using a different Concordion test runner, you can have the test result totals aggregated by applying the ConcordionEnhancedReporting annotation to your test fixture.
  • API changes
  • These API changes won't affect you if you are using Concordion as-is.
  • For developers extending the Concordion code base directly, there are a number of potentially breaking API changes
  • Additional methods on interfaces:
  • org.concordion.api.ResultRecorder
  • void setSpecificationDescription(String description)
  • void record(ResultSummary result)
  • org.concordion.api.ResultRecorder
  • ResultSummary getMeaningfulResultSummary(Object fixture)
  • String printToString(Object fixture)
  • String printCountsToString(Object fixture)
  • org.concordion.api.extension.ConcordionExtender
  • ConcordionExtender withRunStrategy(RunStrategy runStrategy).
  • abstract class org.concordion.api.listener.AbstractRunEvent
  • ResultSummary getResultSummary()
  • constructors AbstractRunEvent(Element element, ResultSummary summary) and AbstractRunEvent(Element element, Result result) replace AbstractRunEvent(Element element)
  • Modified interface methods:
  • org.concordion.api.ResultRecorder:
  • The execute(Resource resource, String href) method now returns a ResultSummary rather than a RunnerResult
  • Removed classes:
  • The previously unused class org.concordion.api.Context is removed.
  • The class org.concordion.api.RunnerResult is now unused and has been removed.

New in Concordion 1.4.7 (Jan 20, 2015)

  • Adds support for JUnit 4.12
  • New method Element.getParentElement()