首页 > 代码库 > 在VS2010单元测试中,Assert断言主要有那些功能?如何去编写代码测试?

在VS2010单元测试中,Assert断言主要有那些功能?如何去编写代码测试?

单元测试的基本方法是调用被测代码的函数,输入函数的参数值,获取返回结果,然后与预期测试结果进行比较,如果相等则认为测试通过,否则认为测试不通过。

1、Assert类的使用
Assert.Inconclusive()    表示一个未验证的测试;
Assert.AreEqual()         测试指定的值是否相等,如果相等,则测试通过;
AreSame()            用于验证指定的两个对象变量是指向相同的对象,否则认为是错误
AreNotSame()        用于验证指定的两个对象变量是指向不同的对象,否则认为是错误
Assert.IsTrue()              测试指定的条件是否为True,如果为True,则测试通过;
Assert.IsFalse()             测试指定的条件是否为False,如果为False,则测试通过;
Assert.IsNull()               测试指定的对象是否为空引用,如果为空,则测试通过;
Assert.IsNotNull()          测试指定的对象是否为非空,如果不为空,则测试通过;

2、CollectionAssert类的使用
用于验证对象集合是否满足条件
StringAssert类的使用
用于比较字符串。
StringAssert.Contains
StringAssert.Matches
StringAssert.tartWith

1、    先创建一个空白解决方案(文件—>新建—>项目—>已安装的模版—>其他项目类型—>Visual Studio解决方案-->空白解决方案)命名为TestUnit

2、    在新创建的解决方案(TestUnit)鼠标右键,选择添加—>新建项目—>控制台应用程序。

使用 Assert 类

UnitTestAssertException

编写新的 Assert 异常类时使该类从基类 UnitTestAssertException 进行继承,可更方便地将异常标识为断言失败而非从测试或产品代码引发的意外异常。

ExpectedExceptionAttribute

如果希望开发代码中的某方法引发异常,又想用测试方法来验证是否真的在该方法中引发了异常,则请用 ExpectedExceptionAttribute 特性来修饰测试方法。

使用 Assert.AreEqual 重载不安全类型

Assert.AreEqual 方法具有许多重载,可对特定数据类型进行比较。 但是,Assert.AreEqual 方法没有面向不安全类型(如指针数据类型)的重载。

为了说明此问题,请创建一个包含以下类的 C# 控制台应用程序:

unsafe public class CUnsafeTest
{
    private int* m_pX = null;
    unsafe public void VoidPtr(void* voidPtr)
    {
    }
    unsafe public int* ReturnPointer(float* fPtr, TestThis* pTestThis)
    {
        int x = 5;
        return &x;
    }
}

现在为 CunsafeTest 类生成测试。 您将看到生成与下面的示例类似的代码:

TestMethod()

public void ReturnPointerTest()
{
    unsafe
    {
        CodeGen.BVT.Unsafe.CUnsafeTest target;
        target = new CodeGen.BVT.Unsafe.CUnsafeTest();
        //  TODO: Initialize to an appropriate value
        System.Single* fPtr = null;
        //  TODO: Initialize to an appropriate value
        TestThis* pTestThis = null;
        //  TODO: Initialize to an appropriate value
        System.Int32* expected = null;
        System.Int32* actual;
        actual = target.ReturnPointer(fPtr, pTestThis);
        Assert.AreEqual(actual, expected);
            // On the preceding line, no overload is available. 
    }
}
可以参考https://social.msdn.microsoft.com/Search/zh-CN?query=assert&emptyWatermark=true&ac=4

在VS2010单元测试中,Assert断言主要有那些功能?如何去编写代码测试?