【发布时间】:2011-02-16 21:43:22
【问题描述】:
我有 C++/CLI 代码,并且正在使用 Visual Studio 2008 Team Suite Code Coverage。
代码头:
// Library.h
#pragma once
#include <string>
using namespace System;
namespace Library
{
public ref class MyClass
{
public:
static void MyFoo();
static std::string Foo();
};
}
代码实现:
#include "Library.h"
using namespace Library;
using namespace System;
void MyClass::MyFoo()
{
Foo();
}
std::string MyClass::Foo()
{
return std::string();
}
我有一个 C# 单元测试,它调用 MyClass.MyFoo():
[TestMethod]
public void TestMethod1()
{
Library.MyClass.MyFoo();
}
出于某种原因,我没有得到MyClass 的完整代码覆盖率。 Foo() 方法有 3 个未覆盖的块和 5 个覆盖的块。右大括号 (}) 标记为橙色 - 部分覆盖。我不知道为什么它被部分覆盖而不是完全覆盖,这是我的问题。
MyClass Code Coverage Print Screen http://img217.imageshack.us/img217/7664/myclasscoverage.png
更新
另一个例子:
标题:
// Library.h
#pragma once
using namespace System;
namespace Library
{
struct MyStruct
{
int _number;
};
public ref class MyClass
{
public:
static void MyFoo();
static MyStruct* Foo();
};
}
实施:
#include "Library.h"
using namespace Library;
using namespace System;
void MyClass::MyFoo()
{
delete Foo();
}
MyStruct* MyClass::Foo()
{
return new MyStruct();
}
我仍然在 Foo 的 return 声明中得到同样的缺失报道。
【问题讨论】:
标签: visual-studio-2008 c++-cli code-coverage