最新消息:把Logo换了一下,虽然丑了点,但至少完全是自己的设计

Visual Studio中C#单体测试常用标签即其注意点

CSharp 宇托 571浏览 暂无评论

Visual Studio中C#单体测试中,最常用标签有TestClass, TestMethod, AssemblyInitialize, AssemblyCleanup, ClassInitialize, ClassCleanup, TestInitialize, TestCleanup这几个。下面是相对详细的介绍和注意点。

TestClass

TestClass用来申明单体测试类。

TestMethod

TestMethod用来申明单体测试函数。

AssemblyInitialize

AssemblyInitialize用于一个项目(Project)的初始化。在项目(Project)的单体测试开始前执行。
要注意的是,用AssemblyInitialize申明的函数必须是静态公开(public static)的。一个项目只能有一个AssemblyInitialize申明的函数

AssemblyCleanup

AssemblyCleanup用于一个项目的(Project)的终了处理。在项目(Project)的单体测试全部结束后执行。
要注意的是,用AssemblyCleanup申明的函数必须是静态公开(public static)的。一个项目只能有一个AssemblyCleanup申明的函数

ClassInitialize

ClassInitialize用于一个类(class)的初始化。在类(class)的单体测试开始前执行。
要注意的是,用ClassInitialize申明的函数必须是静态公开(public static)的。一个类只能有一个ClassInitialize申明的函数

ClassCleanup

ClassCleanup用于一个类(class)的初始化。在项目(Project)的所有单体测试完成后执行。
要注意的是,用ClassCleanup申明的函数必须是静态公开(public static)的。一个类只能有一个ClassCleanup申明的函数
这里一定要注意的是ClassCleanup执行不是在类的单体测试完成后,而是在项目(Project)的所有单体测试完成后。不知道是不是微软的设计Bug,为什么设计成这样

TestInitialize

TestInitialize用于单体测试函数的初始化。在单体测试函数前执行。
要注意的是,用TestInitialize申明的函数必须是公开(public)的。一个类只能有一个TestInitialize申明的函数

TestCleanup

TestCleanup用于单体测试函数的初始化。在单体测试函数后执行。
要注意的是,用TestCleanup申明的函数必须是公开(public)的。一个类只能有一个TestCleanup申明的函数

示例

比如下面的代码。

UnitTest1.cs

C#
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Diagnostics;

namespace UtTest
{
    [TestClass]
    public class UnitTest1
    {
        [AssemblyInitialize]
        public static void AssemblyInitialize(TestContext a)
        {
            Debug.WriteLine("UnitTest1: AssemblyInitialize");
        }

        [AssemblyCleanup]
        public static void AssemblyCleanup()
        {
            Debug.WriteLine("UnitTest1: AssemblyCleanup");
        }

        [ClassInitialize]
        public static void ClassInitialize(TestContext a)
        {
            Debug.WriteLine("UnitTest1: ClassInitialize");
        }

        [ClassCleanup]
        public static void ClassCleanup()
        {
            Debug.WriteLine("UnitTest1: ClassCleanup");
        }

        [TestInitialize]
        public void TestInitialize()
        {
            Debug.WriteLine("UnitTest1: TestInitialize");
        }

        [TestCleanup]
        public void TestCleanup()
        {
            Debug.WriteLine("UnitTest1: TestCleanup");
        }

        [TestMethod]
        public void TestMethod1()
        {
            Debug.WriteLine("UnitTest1: TestMethod1");
        }

        [TestMethod]
        public void TestMethod2()
        {
            Debug.WriteLine("UnitTest1: TestMethod2");
        }
    }
}

UnitTest2.cs

C#
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Diagnostics;

namespace UtTest
{
    [TestClass]
    public class UnitTest2
    {

        [ClassInitialize]
        public static void ClassInitialize(TestContext a)
        {
            Debug.WriteLine("UnitTest2: ClassInitialize");
        }

        [ClassCleanup]
        public static void ClassCleanup()
        {
            Debug.WriteLine("UnitTest2: ClassCleanup");
        }

        [TestInitialize]
        public void TestInitialize()
        {
            Debug.WriteLine("UnitTest2: TestInitialize");
        }

        [TestCleanup]
        public void TestCleanup()
        {
            Debug.WriteLine("UnitTest2: TestCleanup");
        }

        [TestMethod]
        public void TestMethod1()
        {
            Debug.WriteLine("UnitTest2: TestMethod1");
        }
    }
}

执行后输出的结果为:

UnitTest1: AssemblyInitialize
UnitTest1: ClassInitialize
UnitTest1: TestInitialize
UnitTest1: TestMethod1
UnitTest1: TestCleanup
UnitTest1: TestInitialize
UnitTest1: TestMethod2
UnitTest1: TestCleanup
UnitTest2: ClassInitialize
UnitTest2: TestInitialize
UnitTest2: TestMethod1
UnitTest2: TestCleanup
UnitTest1: ClassCleanup
UnitTest2: ClassCleanup
UnitTest1: AssemblyCleanup

转载请注明:宇托的狗窝 » Visual Studio中C#单体测试常用标签即其注意点

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址