nunit / nunit-console

NUnit Console runner and test engine
MIT License
215 stars 151 forks source link

Separate assembly for NUnit extensibility #1049

Open CharliePoole opened 2 years ago

CharliePoole commented 2 years ago

This feature was first developed as "Engine Extensibility" so the implementation is embodied in an engine service. This makes it next to impossible to use extensibility in other places, like in the console runner, third party runners and even in our own agents.

I propose that we create a separate assembly... NUnit.Extensibility to contain most of the implementation... the existing engine service would simply use an API to access the implementation details.

As a subsquent improvement (but not part of this issue) we could implement the IFrameworkDriverFactory extension in nunit.core using the API directly, without need for full access to engine services.

I'm calling this an idea for now and asking for @nunit/engine-team discussion.

CharliePoole commented 2 years ago

@jnm2 @mikkelbu Any thoughts on this?

CharliePoole commented 2 years ago

I'm fleshing this out further and starting to work on it. Hoping that it will make enough sense to engender comments as I get more into the details!

Here's how I break this down stepwise...

Pre-4.0 Change:

Non-Breaking 4.0 Changes

Breaking 4.0 Change: