NUnit vs. xUnit
What are the differences between NUnit and xUnit.net? What's the point of developing two of them, not only one?
I've read that xUnit is being developed by inventor of NUnit:
xUnit.net is a unit testing tool for the .NET Framework. Written by the original inventor of NUnit
On the other hand:
NUnit is a unit-testing framework for all .Net languages .. the current production release, version 2.6, is the seventh major release of this xUnit based unit testing tool
So where is the truth?
At the time of writing this answer, the latest NUnit version is v3.5 and xUnit.net is v2.1.
Both frameworks are awesome, and they both support parallel test running (in a different way though). NUnit has been around since 2002, it's widely used, well documented and has a large community, whereas xUnit.net is more modern, more TDD adherent, more extensible, and also trending in .NET Core development. It's also well documented.
In addition to that, the main difference I noticed is the way that xUnit.net runs the test methods. So, in NUnit, we've got a test class and a set of test methods in it. NUnit creates a new instance of the test class and then runs all of the test methods from the same instance. Whereas xUnit.net creates a new instance of the test class for each of the test methods. Therefore, one cannot use fields or properties to share data among test methods which is a bad practice, as our test methods would be dependent to each other which is not acceptable in TDD. So if you use xunit.net, you could be sure that your test methods are completely isolated.
If you're willing to share some data among your test methods though, xUnit will let you do so. Therefore, by default all test methods are completely isolated, but you can break this isolation in specific cases intentionally. I fancy this attitude, that's why I like it better.
You're confusing the name of a single tool (xUnit.net) with the name of a whole class of unit testing frameworks (xUnit, the x referring to a language/environment, e.g. JUnit, NUnit, ...).
xUnit Pros:
xUnit follows a new concept by avoiding the old "SetUp" and "TearDown" methods. It forces us to use IDisposable and a constructor as we should do as .NET developers. Also xUnit has a clear context sharing concept.
xUnit Cons:
Availability to get the test context is not implemented yet.