私は単体テストに不慣れで、Catch フレームワークを使用することにしました。これは、1 つのヘッダー ファイルと統合するのが簡単に思えたからです。ただし、マルチファイルのバイナリ検索ツリー プログラムがあります (ファイルは次のとおりです: main.cpp、Tree.h、Tree.hxx、TreeUnitTests.cpp、catch.hpp)。main.cpp で int main() 関数をコメントアウトした場合にのみ、単体テストを実行できます。TreeUnitTests.cpp の '#define CATCH_CONFIG_MAIN' 宣言と競合していることは理解していますが、その宣言を含めないと単体テストを実行できません。単体テストを実行するたびに main() をコメントせずに両方を実行するにはどうすればよいですか?
これは私が使用しているヘッダー ファイルです: https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp
そして、私が見つけてガイドとして使用した Catch チュートリアル: https://github.com/philsquared/Catch/blob/master/docs/tutorial.md
参照用の関連ファイル: main.cpp:
//******************* ASSN 01 QUESTION 02 **********************
#include "Tree.h"
#include <iostream>
using namespace std;
/*
int main()
{
//creating tree with "5" as root
Tree<int> tree(5);
tree.insert(2);
tree.insert(88);
tree.inorder();
cout << "does tree contain 2?: ";
cout << tree.find(2) << endl;
cout << "does tree contain 3?: ";
cout << tree.find(3) << endl;
Tree<int> copytree(tree);
cout << "copied original tree..." << endl;
copytree.preorder();
cout << "after deletion of 2:\n";
copytree.Delete(2);
copytree.postorder();
return 0;
}
*/
TreeUnitTests.cpp:
#include <iostream>
#include "Tree.h"
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
TEST_CASE("Pass Tests")
{
REQUIRE(1 == 1);
}
TEST_CASE("Fail test")
{
REQUIRE(1 == 0);
}
(私のテストは実際のテストではなく、Catch フレームワークが正しく機能していることを確認するためのものです。これはメタ テストであると言えます)