Модульное тестирование Visual Studio 2010: класс проекта, на который ссылаются, не распознается - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь сделать базовый модульный тест для очень простого класса C ++ в Visual Studio 2010. Я уже протестировал этот класс, и все работает.Тем не менее, когда я создаю тестовый проект, я не могу распознать класс.

Мой заголовочный файл класса:

#include <string>
#include <iostream>
using namespace std;
#ifndef FIRST_H
#define FIRST_H
class First
{
private:
string name;
int age;
public:
// Constructors
First(); // default constructor
First(string n, int a); // constructor with parameters

void ChangeAge(int newAge);
void ChangeName(string newName);

void getName();
void getAge();
};
#endif

Мой cpp-файл класса:

#include "First.h"

// Constructors
First :: First()// default constructor
{
    name = "No Name";
    age = 0;
}
First :: First(string n, int a) // constructor with parameters
{
    name = n;
    age = a;
}
//Manipulators
void First :: ChangeAge(int newAge)
{
    age = newAge;
}
void First :: ChangeName(string newName)
{
    name = newName;
}
// Observers
void First :: getName()
{
    cout << "The name of this student is " << name << endl;
    //cin >> name;
}
void First :: getAge()
{
    cout << "The age of this student is " << age << endl;
}

Вот мой базовый модульный тест: // Примечание: все это генерируется автоматически, за исключением тела void TestMethod1 ()

#include "stdafx.h"

using namespace System;
using namespace System::Text;
using namespace System::Collections::Generic;
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;

    namespace TestProject5
    {
        [TestClass]
        public ref class UnitTest1
        {
        public: 
        [TestMethod]
        void TestMethod1()
        {
            First person;    // Sets Age to 0
            person.getAge(); // Should Display 0
        }
    };
}

При создании проекта модульного теста я получаюсообщение об ошибке: «Сначала это необъявленный идентификатор».

Если я изменю значение «public ref class» с «UnitTest1» на мое имя класса «First», я получу следующую ошибку: «'getAge» isне является участником "TestProject5 :: First" "

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я исправил это, щелкнув правой кнопкой мыши по моему тестовому проекту и выбрав: Свойства> Общие> CommonLanguageRuntimeSupport.Затем я изменил «Безопасную поддержку MSL Common Language RunTime (/ clr: safe)» на «Поддержка общего языка RunTime (/ clr)».После этого я все еще получал ошибки, поэтому я изменил имя класса ref с обратно на сгенерированное имя по умолчанию.Я также удалил "пространство имен TestProject5", а также фигурные скобки.Это исправило ВСЕ мои ошибки.

Вот мой новый код:


#include "stdafx.h"
#include "First.cpp"
using namespace System;
using namespace System::Text;
using namespace System::Collections::Generic;
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;

//namespace TestProject4

    [TestClass]
    public ref class UnitTest5
    {
    public: 
        [TestMethod]
        void TestMethod1()
        {
            First person;
            int age = person.getAge();
            Assert.AreEqual(0, age);
        }
    };

0 голосов
/ 25 июня 2018

Вам нужно #include "First.h" в файле модульного теста.

Тем не менее, вы уверены, что нацеливаетесь на C ++ / CLI?

...