Skip to content

Roadmap

CharliePoole edited this page Jan 18, 2022 · 8 revisions

This "Road Map" is under development. It is intended to be a view from 60,000 feet, giving very general idea of the features we expect to add and, at least to an extent, the order in which we expect to add them. More detailed information is available in the relevant issues, especially those pertaining to version 4.0

Version 3

Version 3 is our current stable release series, with 3.14.0 being the latest release.

Although it's possible that 3.14.0 will be our last feature release in the 3.x series, I'm currently expecting that there will be one or two more. The team is currently working on this decision.

Coming Releases and Features

We need some key Features in 3.x releases before we switch to development of version 4.0. The following is merely a tentative list to get a discussion started:

  • Introduce a .NET 6.0 Agent to the standard netfx console runner.
  • Target NUnit.ConsoleRunner.NetCore to .NET 5.0 or 6.0 rather than .NET Core 3.1.
  • Making the NetCore runner a separate project is a possibility we should discuss as well.

Version 4

Version 4.0 will be our next major release. Some of the changes are already present in our repository under the dev4.0 branch, while our master branch continues to track the 3.x series. One key decision we need to make is when to merge those changes into master, essentially putting an end to further 3.x development.

Note: Once we do that, 3.x development isn't actually impossible, but it's a bit more difficult. That's why we need to decide (see above) just what features we want in 3.x before making the switch.

Breaking Changes

These are the changes we plan, which make it necessary to have a new Major Release. Only the main changes are listed here. For a more complete list see the issues on GitHub.

  • Engine API will change. Precisely how is yet to be defined.
  • Existing extensions will no longer supported, due to changes in the API. Extension authors will need to create new versions.
  • Certain extensions will no longer be bundled with our msi and zip packages: V2 Frameweork Driver, V2 Result Writer, Teamcity extension.
  • Certain runner options will no longer be supported: --domain, --process, --inprocess. This means that the default setting of one process per assembly will initially be the only option available. See New Features for exceptions to this.

New Features

Here is a starter list of key new features to be added to 4.0:

  • All Agents will be Pluggable Agents, that is, engine extensions. For each release, a set of standard agents will be included as dependencies. The agents included may change from time to time, which will require a separate install of any agents needed, which were no longer included.

    Note: Modifying the list of agents bundled with the runner in such a way that tests continue to run using a different agent is not considered a breaking change and will normally be done as a feature release.

  • Remove unneeded Services from nunit.engine.core. This means any current extensions not used by the engine but only by agents. Where needed, the existing code will be used directly rather than through the service mechanism.

  • Create a separate nunit.engine.extension assembly to function as the basis of the ExtensionService. This will allow use of the module in contexts where the extension service is not useful, including

    • Loading the engine dynamically in the same way extensions are now loaded.
    • Locating framework drivers for use by agents.