1

ネイティブ テスト プロジェクトを同じソリューション内の既存のプロジェクトにリンクしようとしています。#include で、テストしようとしているクラスのヘッダーへのパスを書いています。

テスト エクスプローラーでテストを実行すると、ビルド エラーが発生します。

エラー 1 エラー LNK2019: 未解決の外部シンボル "public: __thiscall DataManager::DataManager(void)" (??0DataManager@@QAE@XZ) が関数で参照されています "public: void __thiscall MyProject.Tests::UnitTest1::TestMethod1(void) " (?TestMethod1@UnitTest1@MyProjectTests@@QAEXXZ) D:\Documents\VisualStudio2013\Projects\MyProject\MyProject.Tests\DataManagerTests.obj MyProject.Tests

ネイティブ テスト プロジェクトを .dll プロジェクトまたは静的ライブラリにリンクする方法のさまざまな例を見つけましたが、Windows アプリケーションにはリンクしませんでした。

あなたの助けに本当に感謝します。

#include "stdafx.h"
#include "CppUnitTest.h"

#include "D:/Documents/VisualStudio2013/Projects/MyProject/DataManager.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace VideoFaceRecognitionIPCATests
{       
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            DataManager dataManager = DataManager();
            Assert::AreEqual(0, 0);
        }

    };
}
4

2 に答える 2

0

リンク入力ファイル オプションに DataManager .lib ファイルを追加する必要があります。プロジェクトを右クリックし、プロパティに移動して、Linker Input エントリを選択します。追加の依存関係に .lib を追加し、必要に応じてパスを指定します (またはプロジェクトに .lib ファイルを追加します)。

于 2016-04-23T13:35:32.017 に答える
0

これが 3 年前のものであることはわかっていますが、Windows 実行可能アプリを単体テストする方法を見つけようとしている将来の Google 社員のために: 単体テスト プロジェクトを実行可能プロジェクトにリンクしようとしないでください。それは機能しません (その関数をエクスポートするように exe を設定しなければ、それでもかなり疑問です)。

他にもいくつかの選択肢があります。ソース モジュール (.cpp) を単体テスト プロジェクトに直接追加するか、ソース モジュールを静的または動的ライブラリ プロジェクトに配置して、実行可能プロジェクトと単体テスト プロジェクトの両方をライブラリにリンクすることができます。

于 2019-03-24T23:52:06.420 に答える