KirillHelm
@KirillHelm

Почему не обрабатываются функции без параметров в UnitTests?

Создавал статическую библиотеку на c++, писал к ней тесты, всё было отлично. Стал вопрос все перенести в консольный проект CLR, прям туда просто скопировал файлы с своей библиотеки, всё отлично работало. Решил доделать UNIT TESTS, но тут вот не задача, подключил всю эту красоту к приложению, всё нормально, но, начало выдавать ошибку линковщика 2019, я так понимаю что он наверное cpp-шники не видет или что? По тому, что когда на конструкторы по умолчанию ругался, где дифенишен был вынесен в cpp, я написал его в заголовочный и всё запахало.

Мало-ли, код одного из классов:
Point.h
#pragma once

namespace Battleship
{

	class Point
	{
	private:

		unsigned iX;
		unsigned iY;

	public:

		Point() : iX(0), iY(0) { };
		Point(int X, int Y) : iX(X), iY(Y) { };
		const int X();
		const int Y();
		void Set(int X, int Y);

		bool operator==(Point Value);
		bool operator!=(Point Value);

		void MoveUp();
		void MoveDown();
		void MoveLeft();
		void MoveRight();

	};
}

Point.cpp
#include "Point.h"

const int Battleship::Point::X()
{
	return iX;
}

const int Battleship::Point::Y()
{
	return iY;
}

void Battleship::Point::Set(int X, int Y)
{
	if (X >= 0 && Y >= 0)
	{
		iX = X;
		iY = Y;
	}
	else
	{
		return;
	}
}

bool Battleship::Point::operator==(Point Value)
{
	if (this->iX == Value.iX && this->iY == Value.iY)
	{
		return true;
	}
	else
	{
		return false;
	}
}

bool Battleship::Point::operator!=(Point Value)
{
	if (!(*this == Value))
	{
		return true;
	}
	else
	{
		return false;
	}
}

void Battleship::Point::MoveUp()
{
	iY--;
}

void Battleship::Point::MoveDown()
{
	iY++;
}

void Battleship::Point::MoveLeft()
{
	iX--;
}

void Battleship::Point::MoveRight()
{
	iX++;
}

UnitTest
#include "stdafx.h"
#include "CppUnitTest.h"
#include "Point.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace Battleship;

namespace BattleShipUnitTests
{		
	TEST_CLASS(UnitTest1)
	{
	public:
		
		TEST_METHOD(TestMethod1)
		{
			Point Point1 = *new Point();        //Раньше тут вылетала 2019, пока я не поменял конструктор поумолчанию
			Point Point2 = *new Point(1, 2);

			Point1.MoveLeft();        //Теперь она вылетает тут...
		}

	};
}


Может быть я чего-от не догоняю, буду благодарен, кто объяснит, хочется научится и разобраться :)
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы