visual studio2015单元测试

尝试引用了包含待测了待测程序的项目,但是不知道该如何调用待测代码,所以只能通过引用生成的库文件

进行单元测试的步骤:

一、创建控制台静态库项目,将要测试的代码编译为库文件

二、创建单元测试项目,引用创建的库文件,并在stdafx.h中包含之前库文件的头文件:

1)直接include头文件的绝对路径

2)将头文件复制到单元测试项目的根目录下,并直接在stdafx.h头文件中include头文件

三、将要测试的代码按照函数划分,分别写入不同的TestMethod中。在测试的时候,可以自己在单元测试项目中新建几个cpp文件,每个文件编写一个驱动小程序来调用被测的函数。然后再要测试结果的地方加上断言:

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

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. 
  }
}

你可能感兴趣的:(visual studio2015单元测试)