Инструмент покрытия кода Visual Studio 2010 C ++ - PullRequest
4 голосов
/ 20 января 2011

знает, как выполнить модульное тестирование в c ++ с результатами покрытия кода, работающими в Visual Studio 2010, я везде искал ответы.Я хочу сохранить проект, который я тестирую, и проект тестирования отдельно.При использовании проекта вывод статической библиотеки не является решением, так как инструмент покрытия кода в VS 2010 не может поместить инструментальный код внутри библиотеки.Я пробовал dll как проект, который нужно протестировать, но затем он не может правильно связать тест, созданный из-за того, что параметр CLR: safe включен для тестов.Есть идеи, люди?Или MS просто не в состоянии сделать инструмент покрытия кода на C ++.

Ответы [ 2 ]

6 голосов
/ 20 января 2011

(Полное раскрытие: я в команде, которая поддерживает эту функцию)

Покрытие собственного кода C ++ поддерживается VS2010, но, как вы видели, вы можете только инструментально связывать двоичные файлы (например, .dll).или .exe).Это означает, что код, для которого вы хотите получить покрытие, должен быть связан с двоичным изображением, прежде чем его использовать.

Какую систему модульного тестирования вы используете?Похоже, ваш тестовый проект - чисто управляемый C ++ (/clr:safe).Если вы строите свой собственный проект C ++ в виде DLL, ваш тестовый проект должен по крайней мере иметь возможность вызывать в собственную DLL с помощью вызовов P / Invoke .Делая это, вам на самом деле не нужно связывать ваш собственный .lib с вашим тестовым проектом.

0 голосов
/ 21 января 2011
//MyTestfile


#include "stdafx.h"
#include "MathFuncsDll.h"

using namespace System;
using namespace System::Text;

using namespace System::Collections::Generic;

using namespace Microsoft::VisualStudio::TestTools::UnitTesting;

namespace anothertest
{
    [TestClass]
    public ref class cuttwotest
    {
    public: 
        [TestMethod]
        void TestMethod1()
        {
            Assert::AreEqual ((MathFuncs::MyMathFuncs::Add(2,3)), 6, 0.05);
        }
    };
}
...