Otrzymuję ten błąd, ale nie wiem, jak to naprawić.
Używam Visual Studio 2013. Nazwa rozwiązania została utworzona MyProjectTest Oto struktura mojego rozwiązania testowego:
- 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;
}
Jestem początkujący; jest to prosty program, który działa bez błędów. Czytałem w internecie i zainteresowałem się testem jednostkowym, więc stworzyłem projekt testowy:
Plik> Nowy> Projekt ...> Zainstalowano> Szablony> Visual C ++> Test> Projekt testu jednostkowego natywnego>
Nazwa: UnitTest1 Rozwiązanie: Dodaj do rozwiązania Następnie lokalizacja zostanie automatycznie przełączona na ścieżkę aktualnie otwartego rozwiązania Oto struktura folderów rozwiązania:
Edytowałem tylko plik 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
}
};
}
Ale pojawia się błąd LNK2019: nierozwiązany symbol zewnętrzny. Wiem, że brakuje implementacji funkcji wielokrotnej . Próbowałem usunąć plik function.cpp i zastąpiłem deklarację definicją i uruchomiłem. Jednak zapisywanie zarówno deklaracji, jak i definicji w tym samym pliku nie jest zalecane. Jak mogę naprawić ten błąd bez robienia tego? Czy powinienem zastąpić #include "../MyProjectTest/function.cpp"
w pliku unittest.cpp?
(Nie jestem zbyt dobry z angielskiego. Dzięki)