2017-11-29 10 views
-1

質問:C++でのGoogle単体テスト:永続的なデータファイルの作成方法

1)C++ Googleユニットテストでは、ファイルはどこに作成されますか?

2)テスト実行後にファイルにアクセスできるように、C++ Google単体テストで永続データファイルを書き込む方法はありますか?

コードと私はcatkin_makeでのUbuntu 14.04上でユニットテストを実行している

望ましい行動。私は、テストが実行された後で見つけることができるファイルをどこかに書き込むようにしたいと思います。次のコードはファイルを書き込みますが、どこに行くのか、単体テストが完了してもそれが続くかどうかはわかりません。

TEST(GUnitTestFileIo, Test_One) 
{ 
    std::ofstream csvFile; 
    csvFile.open("helloWorldTestFile.csv"); 
    if (csvFile.is_open()) { 
    csvFile << "Hello, World, !" << std::endl; 
    csvFile.close(); 
    } else { 
    std::cout << "Failed to open the file!" << std::endl; 
    } 
} 

int main(int argc, char **argv){ 
    testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 
+1

質問デバッグヘルプ(「このコードが動作しないのはなぜですか?」)には、特定の問題またはエラーとその問題自体の中でそれを再現するのに必要な最短のコード。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問を改善するために "編集"リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat

+0

あなたは実装したものを漠然と説明します。ここで何が起こっているのかを言うのは非常に難しいです。その意味で:あなたがやっていることのすべての関連情報を含んだ小さな(しかし働いている)サンプルを凝縮できるかどうか試してみてください。 – GhostCat

+0

これは、結果の実行可能ファイルを呼び出す方法に大きく依存します。それはMSVCの統合ですか? CTest?自分でそれを実行する? – Frank

答えて

0

解決策の1つは、絶対ファイルパスに書き込むことです。次のコードは、Googleユニットテストの内側からユーザのホームディレクトリにファイルを書き込みます。

TEST(GUnitTestFileIo, Test_One) 
{ 
    char const* tmp = getenv("HOME"); 
    if (tmp == NULL) { 
    std::cout << "$(HOME) environment variable is not defined!"; 
    } else { 
    std::string home(tmp); // string for the home directory 
    std::ofstream csvFile; // write the file 
    csvFile.open(home + "/helloWorldTestFile.csv"); 
    if (csvFile.is_open()) { 
     csvFile << "Hello, World, !" << std::endl; 
     csvFile.close(); 
    } else { 
     std::cout << "Failed to open the file!" << std::endl; 
    } 
    } 
} 

// Run all the tests that were declared with TEST() 
int main(int argc, char **argv){ 
    testing::InitGoogleTest(&argc, argv); 
    return RUN_ALL_TESTS(); 
} 
関連する問題