J'ai le code C++/CLI et j'utilise la couverture de Code Suite Team Suite de Visual Studio 2008.Couverture partielle d'une instruction de retour en C++/CLI
L'en-tête de code:
// Library.h
#pragma once
#include <string>
using namespace System;
namespace Library
{
public ref class MyClass
{
public:
static void MyFoo();
static std::string Foo();
};
}
La mise en œuvre du code:
#include "Library.h"
using namespace Library;
using namespace System;
void MyClass::MyFoo()
{
Foo();
}
std::string MyClass::Foo()
{
return std::string();
}
J'ai un C# test unitaire, qui appelle MyClass.MyFoo()
:
[TestMethod]
public void TestMethod1()
{
Library.MyClass.MyFoo();
}
Pour une raison quelconque, je ne pas obtenir une couverture de code complet pour MyClass
. La méthode Foo() a 3 blocs non couverts et 5 blocs couverts. Les crochets de fermeture (}
) sont marqués en orange - partiellement recouverts. Je ne sais pas pourquoi il est partiellement couvert au lieu d'être entièrement couvert, et c'est ma question.
MyClass Code Coverage Print Screen http://img217.imageshack.us/img217/7664/myclasscoverage.png
MISE À JOUR
Un autre exemple:
tête:
// Library.h
#pragma once
using namespace System;
namespace Library
{
struct MyStruct
{
int _number;
};
public ref class MyClass
{
public:
static void MyFoo();
static MyStruct* Foo();
};
}
Mise en œuvre:
#include "Library.h"
using namespace Library;
using namespace System;
void MyClass::MyFoo()
{
delete Foo();
}
MyStruct* MyClass::Foo()
{
return new MyStruct();
}
Je reçois toujours la même couverture manquante dans l'instruction return
de Foo.
Regardez le deuxième exemple que j'ai donné. Il n'utilise pas std :: string. – brickner
Toute utilisation de 'new' peut échouer en lançant une exception. Votre scénario de test ne couvre pas le chemin exceptionnel. –
J'étais douteuse, mais vous aviez raison. J'ai réussi à créer un code similaire à mon 2ème exemple et à le couvrir complètement en le faisant lancer une exception. Je ne pouvais pas complètement couvrir quelque chose qui renvoie std :: string, mais il semble que j'ai du mal à faire des exceptions dans tous les endroits possibles. Merci beaucoup! – brickner