Unit test, NUnit or Visual studio? [closed]
Solution 1:
NUnit has few advantages over MS-Test
- Suite attribute - can aggregate tests and execute them separately (useful for large projects with fast and slow tests for example)
- Readable Assert method, e.g.
Assert.AreEqual(expected, actual)
vsAssert.That(actual, Is.EqualTo(expected))
- NUnit has frequent version updates - MS-Test has only one per VS version.
- Many integrated runners including Resharper and TestDriven.NET
- Expected exception message assertion - can be done using attribute in NUnit but must be done using Try-Catch in MS-Test
-
[TestCase]
! NUnit allows for parameter-ized tests.
Solution 2:
From my current perspective (after 8 months of development with about 10 developers on average) I would advise against using MSTest for the following reasons
- The framework in itself is quite slow. I don't mean the test code that you write - that's under your control. I mean the framework running those tests is slow, whether it's running a test suite, single tests etc.
- The need to keep a Test-Metadata file which always leads to complications when several developers are working on it (recreating e.g. the metadata etc.). Every other test suite doesn't need a metadata file. It is kind of nice to organize your tests but you can achieve the same through namespaces, classes and method names.
- Doing Continuous Integration, if you want to run unit tests on your build machine you will need to install Visual Studio on that machine.
In other words, if I would have to decide again 8 months ago, I would probably take NUnit. I may not have the integrated test results report, but developers would have a more seamless testing experience.