Я использую VS2005 VC ++ для неуправляемого C ++. У меня есть VSTS, и я пытаюсь использовать инструмент покрытия кода для выполнения двух задач в отношении модульных тестов:
- Посмотрите, какая часть моего тестируемого кода, на который я ссылаюсь, выполняется
- Посмотрите, сколько методов моего тестируемого кода (если есть) вообще не тестируются
Настройка инструмента покрытия кода VSTS (см. Текст ссылки ) и выполнить задачу №1 было несложно. Однако №2 оказался для меня неожиданным вызовом. Вот мой тестовый код.
class CodeCoverageTarget
{
public:
std::string ThisMethodRuns() {
return "Running";
}
std::string ThisMethodDoesNotRun() {
return "Not Running";
}
};
#include <iostream>
#include "CodeCoverageTarget.h"
using namespace std;
int main()
{
CodeCoverageTarget cct;
cout<<cct.ThisMethodRuns()<<endl;
}
Когда оба метода определены в классе, как указано выше, компилятор автоматически удаляет ThisMethodDoesNotRun () из файла obj. Если я вынесу его определение за пределы класса, оно будет включено в файл obj, и инструмент покрытия кода покажет, что оно вообще не выполнялось. В большинстве случаев я хочу, чтобы компилятор выполнил это исключение за меня, но для инструмента покрытия кода он побеждает значительную часть значения (например, поиск непроверенных методов). Я пробовал несколько вещей, чтобы заставить компилятор перестать быть для меня умным и компилировать все, но я в тупике. Было бы неплохо, если бы инструмент покрытия кода компенсировал это (я полагаю, отсканировав источник и сопоставив его с выводом компоновщика), но я не нашел ничего, что могло бы предположить, что у него есть специальный режим, который нужно включить. Мне здесь совсем не хватает чего-то простого или это невозможно с помощью инструмента покрытия кода VC ++ + компилятор VSTS?
Заранее спасибо, КГБ