回 帖 发 新 帖 刷新版面

主题:VC2005如何生成C++语言的单元测试

RT

回复列表 (共1个回复)

沙发

终于搞清楚了:)

打开VC2005,文件--新建--项目,选择Visual C++ -- 测试 -- 测试项目,输入名称,点击确定
在项目中添加类和方法

class.h
-------------------------------
#pragma once

class A
{
public:
    int fun(int a, int b);
};

class.cpp
--------------------------------
#include "stdafx.h"
#include "class.h"

//取a和b较大的值
int A::fun(int a, int b)
{
    if (a > b)
    {
        return a;
    }
    else if (b > a)
    {
        return b;
    }
    else
    {
        return 0;
    }
}

在UnitTest1.cpp中包含类的头文件#include "class.h",然后在void TestMethod1()里面添加测试代码
A a;
Assert::AreEqual(6, a.fun(5,6), "fun函数测试错误");
编译,这时会提示错误
error C4959: 不能在 /clr:safe 中定义非托管 class“A”,因为访问其成员会产生不可验证的代码
在项目--属性--配置属性--常规--公共语言运行库支持这里改成“公共语言运行库支持(/clr)”
编译通过,运行。界面会出现一个“选择结果”的提示,这里选择通过ManualTest1就会通过,选择失败ManualTest1就会失败,这个对单元测试没有影响,相当于MS给的一个例子吧

Assert::AreEqual(a,b,c)的功能是判断a和b是否相等,如果相等测试就通过,如果不相等测试就失败,并输出提示消息c
想进行多个测试的话可以在后面添加
[TestMethod]
void TestMethod2()
{
    Assert::AreEqual(5, a.fun(5,5), "fun函数测试错误");
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册