Here is a template class for an MS-Test unit test class. Pay careful attention to the order of the various test method calls.
[TestClass]
public sealed class VSUnitTestTemplate
{
// Invoked after AssemblyInitialize
public VSUnitTestTemplate()
{
}
#region Setup/TearDown
// Invoked before all tests in an assembly have run
[AssemblyInitialize]
public static void AssemblyInitialize(TestContext testContext)
{
}
// Invoked after all tests in an assembly have run
[AssemblyCleanup]
public static void AssemblyCleanup()
{
}
// Executed before running any tests (but after the constructor)
[ClassInitialize()]
public static void ClassInitialize(TestContext context)
{
}
// Executed after running all the class tests
[ClassCleanup()]
public static void ClassCleanup()
{
}
// Executed before each individual Test
[TestInitialize]
public void TestInitialize()
{
}
// Executed after each individual Test
[TestCleanup]
public void TestCleanup()
{
}
#endregion Setup/TearDown
// A single test
[TestMethod]
public void MyUnitTest()
{
// arrange: Setup
// act: Perform test steps
// assert: Verify the results
}
// You can add test parameters to a test and use it to test multiple cases
[TestMethod]
[DataRow(5.0d, 0.0d, 3)]
[DataRow(5.0d, 1.0d, 3)]
[DataRow(5.0d, 0.0d, 5)]
public void SomeTest(
double fullLengthSecs, double startTimeSecs, int expectedValue)
{
}
}
From what I have seen in various blogs (see here and MS-Test versus NUnit here) most people recommend sticking to NUnit or some other open-source framework. The reasons are that MS-Test has:
- Dependence on a test Metadata file.
- A framework that in itself is quite slow.
- A dependence on Visual Studio being installed for continous integration testing whereas something like NUnit only needs the NUnit assemblies installed.
No comments:
Post a Comment