Saya mendapatkan kesalahan ini, tetapi saya tidak tahu cara memperbaikinya.
Saya menggunakan Visual Studio 2013. Saya membuat nama solusi MyProjectTest Ini adalah struktur solusi pengujian saya:
- function.h
#ifndef MY_FUNCTION_H
#define MY_FUNCTION_H
int multiple(int x, int y);
#endif
-fungsi.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;
}
Saya seorang pemula; ini adalah program sederhana dan berjalan tanpa kesalahan. Saya membaca di internet dan menjadi tertarik dengan pengujian unit, jadi saya membuat proyek pengujian:
File> New> Project ...> Installed> Templates> Visual C ++> Test> Native Unit Test Project>
Nama: UnitTest1 Solusi: Tambahkan ke solusi Kemudian lokasi dialihkan secara otomatis ke jalur solusi terbuka saat ini Ini adalah struktur folder dari solusi:
Saya hanya mengedit file 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
}
};
}
Tetapi saya mendapatkan kesalahan LNK2019: simbol eksternal yang belum terselesaikan. Saya tahu bahwa implementasi fungsi kelipatan hilang. Saya mencoba untuk menghapus file function.cpp dan saya mengganti deklarasi dengan definisi, dan itu berjalan. Namun tidak disarankan untuk menulis deklarasi dan definisi dalam file yang sama. Bagaimana cara memperbaiki kesalahan ini tanpa melakukan itu? Haruskah saya mengganti dengan #include "../MyProjectTest/function.cpp"
dalam file unittest.cpp?
(Saya tidak terlalu pandai berbahasa Inggris. Terima kasih)