Я получаю эту ошибку, но не знаю, как ее исправить.
Я использую Visual Studio 2013. Я назвал решение MyProjectTest. Это структура моего тестового решения:
- function.h
#ifndef MY_FUNCTION_H
#define MY_FUNCTION_H
int multiple(int x, int y);
#endif
-function.cpp
#include "function.h"
int multiple(int x, int y){
return x*y;
}
- main.cpp
#include <iostream>
#include <cstdlib>
#include "function.h"
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << multiple(a, b) << endl;
system("pause");
return 0;
}
Я новичок; это простая программа, работающая без ошибок. Я прочитал в Интернете и заинтересовался модульным тестом, поэтому я создал тестовый проект:
Файл> Создать> Проект ...> Установлено> Шаблоны> Visual C ++> Тест> Проект собственного модульного тестирования>
Имя: UnitTest1 Решение: Добавить в решение Затем местоположение автоматически переключилось на путь к текущему открытому решению. Это структура папок решения:
Я редактировал только файл unittest1.cpp:
#include "stdafx.h"
#include "CppUnitTest.h"
#include "../MyProjectTest/function.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestEqual)
{
Assert::AreEqual(multiple(2, 3), 6);
// TODO: Your test code here
}
};
}
Но я получаю ошибку LNK2019: неразрешенный внешний символ. Я знаю, что реализация функции multiple отсутствует. Я попытался удалить файл function.cpp, заменил объявление определением, и он запустился. Но записывать декларацию и определение в одном файле не рекомендуется. Как я могу исправить эту ошибку без этого? Должен ли я заменить на#include "../MyProjectTest/function.cpp"
в файле unittest.cpp на?
(Я не очень хорошо говорю по-английски. Спасибо)