質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

7852閲覧

Visual Studio 2015におけるユニットテストのリンクエラー

komichia

総合スコア7

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/02/11 04:21

編集2018/02/11 04:33

C++にもVisual Studioにもあまり慣れていない者です。
そもそものやり方さえ正しいのか分かりません。

力を貸してくれることに感謝します。

#実現したいこと

C++アプリケーションプロジェクトのユニットテスト

#状況

以下の手順を行ったところ、期待通りに動作しませんでした。

  1. 新しいプロジェクト「空のプロジェクト(C++)」"Project1"を作成。
  2. "main.cpp", "add.hpp", "add.cpp"を作成。
  3. ファイル -> 追加 -> 新しいプロジェクトで「ネイティブ単体テスト プロジェクト(C++)」"UnitTest1"を作成。
  4. UnitTest1の参照 -> 参照の追加からProject1を追加。
  5. 自動で作成されたUnitTest1のunittest1.cppにadd.hppをインクルードしてテストコードを記入。
  6. テストコードをビルドするとリンクエラーが起きる。

#該当のソースコード等

// 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時間ぐらい調べてみたのですが、検索の仕方が下手なのか全く進展がありません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

komichia

2018/02/11 05:04

一応それを含むMicrosoftのドキュメントはいくつか読んで色々と試してみたのですが解決には至っていません。
guest

回答1

0

ベストアンサー

  1. UnitTest1の参照 -> 参照の追加からProject1を追加。

の代わりに、 既存の項目の追加: Project1/add.cpp

さもなくば、Project1をライブラリ・プロジェクトとし、
UnitTestプロジェクトにリンクする。(僕はもっぱらコッチ)

投稿2018/02/11 05:08

編集2018/02/11 05:11
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

komichia

2018/02/11 05:15

試してみます。ありがとうございます。
komichia

2018/02/11 06:19

出来ました! ライブラリについての理解が浅かったことが原因かもしれません。しっかり学びなおそうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問