2014年4月24日 星期四

Unit Test 程式結構

先新增一個測試專案

可以看到主要元件是Microsoft.VisualStudio.QualityTools.UnitTestFramework

該元件中常用的Attribute如下

TestClass
用來識別內含測試方法的類別

TestMethod
用來識別測試方法,測試方法必須放置在測試類別中

AssemblyInitialize
用於該組件所有的測試之前,用來配置此組件所佔用的資源

ClassInitialize
用於測試類別的所有測試之前,用來配置該測試類別所使用的資源

TestInitialize
用於測試方法執行之前,用來配置該測試方法中所使用的資源

TestCleanup
用於測試方法執行完成之後,用來釋放該測試方法所佔用的資源

ClassCleanup
用於測試類別中所有的測試完成之後,用來釋放該測試類別所佔用的資源

AssemblyCleanup
用於該組件所有測試類別完成測試之後,用來釋放此組件所佔用的資源

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestClass()]
        public sealed class DivideClassTest
        {
            [AssemblyInitialize()]
            public static void MyAssemblyInitialize(TestContext context)
            {
                Console.WriteLine("MyAssemblyInitialize " + context.TestName);
            }

            [ClassInitialize()]
            public static void MyClassInitialize(TestContext context)
            {
                Console.WriteLine("MyClassInitialize " + context.TestName);
            }

            [TestInitialize()]
            public void MyTestInitialize()
            {
                Console.WriteLine("MyTestInitialize");
            }

            [TestMethod]
            public void TestMethod1()
            {
                Assert.Inconclusive();
            }

            [TestCleanup()]
            public void MyTestCleanup()
            {
                Console.WriteLine("MyTestCleanup");
            }

            [ClassCleanup()]
            public static void MyClassCleanup()
            {
                Console.WriteLine("MyClassCleanup");
            }

            [AssemblyCleanup()]
            public static void MyAssemblyCleanup()
            {
                Console.WriteLine("MyAssemblyCleanup");
            }
        }
    }
}