C++にもVisual Studioにもあまり慣れていない者です。
そもそものやり方さえ正しいのか分かりません。
力を貸してくれることに感謝します。
#実現したいこと
C++アプリケーションプロジェクトのユニットテスト
#状況
以下の手順を行ったところ、期待通りに動作しませんでした。
- 新しいプロジェクト「空のプロジェクト(C++)」"Project1"を作成。
- "main.cpp", "add.hpp", "add.cpp"を作成。
- ファイル -> 追加 -> 新しいプロジェクトで「ネイティブ単体テスト プロジェクト(C++)」"UnitTest1"を作成。
- UnitTest1の参照 -> 参照の追加からProject1を追加。
- 自動で作成されたUnitTest1のunittest1.cppにadd.hppをインクルードしてテストコードを記入。
- テストコードをビルドするとリンクエラーが起きる。
#該当のソースコード等
// main.cpp int main() { return 0; }
// add.hpp #pragma once int add(int a, int b);
// add.cpp #include "add.hpp" int add(int a, int b) { return a + b; }
// unittest1.cpp #include "stdafx.h" #include "CppUnitTest.h" #include "../Project1/add.hpp" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace UnitTest1 { TEST_CLASS(UnitTest1) { public: TEST_METHOD(TestMethod1) { Assert::AreEqual(add(2, 3), 5); } }; }
エラー内容
1>------ ビルド開始: プロジェクト:UnitTest1, 構成:Debug Win32 ------ 1> ライブラリ c:\users\myuser\onedrive\documents\visual studio 2015\Projects\Project1\Debug\UnitTest1.lib とオブジェクト c:\users\myuser\onedrive\documents\visual studio 2015\Projects\Project1\Debug\UnitTest1.exp を作成中 1>unittest1.obj : error LNK2019: 未解決の外部シンボル "int __cdecl add(int,int)" (?add@@YAHHH@Z) が関数 "public: void __thiscall UnitTest1::UnitTest1::TestMethod1(void)" (?TestMethod1@UnitTest1@1@QAEXXZ) で参照されました。 1>c:\users\myuser\onedrive\documents\visual studio 2015\Projects\Project1\Debug\UnitTest1.dll : fatal error LNK1120: 1 件の未解決の外部参照 ========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ==========
試したこと
自分でも1時間ぐらい調べてみたのですが、検索の仕方が下手なのか全く進展がありません。
回答1件
あなたの回答
tips
プレビュー