MSTest vs NUnit
MSTest is a unit testing framework in c#, just as NUnit. Here are a few differences between the two:
MSTest Attribute
|
NUnit Attribute
|
Purpose
|
[TestMethod]
|
[Test]
|
Indentifies of an individual unit test
|
[TestClass]
|
[TestFixture]
|
Identifies of a group of unit tests, all Tests, and Initializations/Clean Ups must appear after this declaration
|
[ClassInitialize]
|
[TestFixtureSetUp]
|
Identifies a method which should be called a single time prior to executing any test in the Test Class/Test Fixture
|
[ClassCleanup]
|
[TestFixtureTearDown]
|
Identifies a method in to be called a single time following the execution of the last test in a TestClass/TestFixture
|
[TestInitialize]
|
[SetUp]
|
Identifies a method to be executed each time before a TestMethod/Test is executed
|
[TestCleanUp]
|
[TearDown]
|
Identifies a method to be executed each time after a TestMethod/Test has executed
|
[AssemblyInitialize]
|
N/A
|
Identifies a method to be called a single time upon before running any tests in a Test Assembly
|
[AssemblyCleanUp]
|
N/A
|
Identifies a method to be called a single time upon after running all tests in a Test Assembly
|
The order of execution is similar in both frameworks, but there are some differences between the two:
- In Nunit, tests are not executed in parallel. Rather, it appears that all tests execute on a single thread. In MSTest, each test is instantiated on a separate thread, this results the runs being interleaved. Therefore, if test A depends on test B for its success, it likely will fail as test B will likely start running as test A is running.
- The time at which ClassCleanUp/TestFixtureTearDown executes is different between the two frameworks. In Nunit, TestFixtureTearDown is executed immediately following the completion of the last test in a TestFixture or after TearDown if the attribute exists for the test in question. In the Whidbey implementation of MsTest, ClassCleanUp executes at the end of a test run, before AssemblyCleanUp but not necessarily immediately after the last test in a TestClass has completed executing.
- In Whidbey, support for test class inheritance was missing. In Nunit, it is fully supported. This will be rectified in Orcas.
I should also mentioned that in MsTest, TestContext exists for passing information about the test run. There is no equivalent in Nunit tests. This can serve as a handy tool for pulling information from datasources on the disk to the unit tests, as well as other uses. More can be read about it here.
Source:
Source:
Comments
Post a Comment