单元测试和 C++
更新:2007 年 11 月
可以使用以 Visual C# 和 Visual Basic 编写的单元测试。
说明: |
---|
在用 Visual C# 和 Visual Basic 生成泛型类型和泛型方法的单元测试方面,存在一些限制。有关更多信息,请参见单元测试和泛型。 |
根据本主题中介绍的详细信息,还可以使用以 Visual C++ 编写的单元测试。
在单元测试上使用 Visual C++ 的方式取决于 Visual C++ 在解决方案中扮演的角色。以下是一些可能出现的情况:
使用单元测试来测试用 Visual C++ 编写的代码。有关信息,请参见 Visual C++ 成品代码。
测试项目中包含用 Visual C++ 编写的单元测试。有关信息,请参见测试项目和 Visual C++。
您打算从使用 Visual C++ 编写的代码自动生成单元测试。有关信息,请参见代码生成和 Visual C++。
Visual C++ 成品代码
请注意以下关于您要测试的代码(此处称为“产品”代码)的事项。
非托管代码。如果您的成品代码是非托管代码,则需要能够从静态库、.obj 文件或 DLL 入口点调用它。嵌入在可执行文件或 DLL 内部的类方法将不会工作,原因是非托管 Visual C++ 不具有运行时发现机制(即反射)。因此,只有传统的本机绑定机制才会工作。
混合代码。混合项目指的是使用 /clr 编译器选项的项目。如果您的成品代码是混合的,而且不是可执行文件,则可以调用和测试代码中的任何可调用方法。
安全代码或纯代码。如果您的成品代码是安全代码或纯代码,则可以调用和测试可执行文件或 DLL 中的任何可调用的程序集方法。
测试项目和 Visual C++
测试项目具有不同的功能,具体取决于为项目设置的编译器选项。有关更多信息,请参见 编译器选项 和 /clr(公共语言运行库编译)。下面的部分介绍各种编译器选项设置对应的功能。
非托管代码
不能使用非托管或本机 Visual C++ 作为测试项目的编程语言。
混合代码
混合项目指的是使用 /clr 编译器选项的项目。这种测试项目提供了测试以下成品代码的能力:
静态本机库
本机 DLL 入口点
独立的 .obj 文件
具有可调用方法的混合模式 DLL 程序集。这不包括可执行文件,因为它们包含非托管代码,而且非托管可执行代码通常不支持重新设定内存基址。
任何可调用的托管方法。这是用 /clr:pure 或 /clr:safe 编译器选项编译的代码。
安全代码或纯代码
如果您正在使用 /clr:pure 或 /clr:safe 编译器选项编译测试项目,则可以测试任何可调用的托管方法。这意味着成品代码是使用 /clr、/clr:pure 或 /clr:safe 编译器选项编译的。
代码生成和 Visual C++
可以将单元测试生成到 Visual C++ 测试项目中。可以从 Visual C++ 成品代码项目生成这些测试。请注意下列事项:
成品代码项目。如果成品代码是使用 Visual C++ 编写的,则仅当您的产品使用 /clr:safe 编译器选项时才能生成单元测试。
测试项目。代码生成可以在任何 Visual C++ 测试项目类型中产生单元测试:混合项目、安全项目和纯项目。产生的默认项目类型是 /clr:safe 项目。如果要将项目更改为 /clr 或 /clr:pure,则可以使用 Visual C++ 编译器选项随时执行此修改。有关更多信息,请参见 /clr(公共语言运行库编译)。