static void

NUnit/MSTest Dual Testing

Run your tests in MSTest and in NUnit. This is a cool idea from MSDN magazine.

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
using NUnit.Framework;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
using TestContext = System.Object;
namespace MTest
    /// <summary>
    /// A dual MSTest- NUnit Test supported test class.
    /// </summary>
    /// <remarks>
    /// MSTest: there are no categories, so we map Category to Description
    /// There is no RowTest (see DataDriven tests instead)
    /// NUnit: you can't use TestContext (mapped to object)
    /// </remarks>
    public class TestUnitTests
        #region SetUp
        private TestContext testContextInstance;
        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        public TestContext TestContext
            get { return testContextInstance; }
            set { testContextInstance = value; }
        /* Unlike NUnit, in MSTest the class is recreated for each test
        * You can use [ClassInitialize] public void TestFixtureSetUp(TestContext context)
        * but the stored object[s] (eg Repository) must be static too.
        * TestContext is not static so not useful for storing objects.
        public void TestFixtureSetUp()
            store = 1; //in MSTest this is called per test, in NUnit, once per class
        private int store;
        #region Tests
        public void TestMethod1()
            Assert.AreEqual(2, store);
        [Category("Maths Tests")] /*MSTest doesn't have categories, so we map this to description */
        public void DivideMethodTest()
            int d = 0;
            int result = (2 / d);