6

Visual Studio (2012) にネイティブ C++ 単体テスト プロジェクトがあります。
テストの 1 つで、単体テスト プロジェクトに含まれるファイルを読みたいと思います。出来ますか?ファイルのどのプロパティを設定し、どのパスを使用する必要がありますか?

プロジェクトに test.txt ファイルを追加しました (その Content プロパティを true に設定しようとしました)。そして、単体テストで、次のような相対パスでファイルを開こうとしました:

std::ifstream file("text.txt");

しかし、うまくいきません。

単体テストが実行される場所にファイルをコピーする必要があると思います。これに対する簡単な解決策はありますか?

4

1 に答える 1

9

これは、マクロを使用して実現できます__FILE__。私の場合、次のようにしました。

//Returns my solution's directory
#define TEST_CASE_DIRECTORY GetDirectoryName(__FILE__)

string GetDirectoryName(string path){
    const size_t last_slash_idx = path.rfind('\\');
    if (std::string::npos != last_slash_idx)
    {
        return path.substr(0, last_slash_idx + 1);
    }
    return "";
}

TEST_METHOD(MyTest)
{
    string filename = std::string(TEST_CASE_DIRECTORY) + "MyTestFile.txt";

    TestOutputForFile(filename);
}
于 2015-02-05T14:45:23.417 に答える