C++/CLI 코드가 있고 Visual Studio 2008 Team Suite 코드 커버리지를 사용하고 있습니다.C++/CLI의 return 문 일부분 적용
코드 헤더 :
// 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
UPDATE
다른 예 :
헤더 :
// 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();
}
01,
나는 Foo의 return
성명에서 여전히 같은 누락 된 적용 범위를 얻고 있습니다.
내가 준 두 번째 사례를 살펴보십시오. std :: string은 사용하지 않습니다. – brickner
'new'를 사용하면 예외를 throw하여 실패 할 수 있습니다. 테스트 케이스가 예외적 인 경로를 다루지 않습니다. –
나는 의심 스럽지만 당신이 옳았다. 제 2의 예와 비슷한 코드를 작성하여 예외를 던지도록 완전히 관리했습니다. std :: string을 반환하는 것을 완전히 커버 할 수는 없지만 가능한 모든 장소에서 예외를 throw하는 데 어려움을 겪고있는 것처럼 보입니다. 감사합니다. – brickner