データベース接続槽DBPool分析(六):gtest
2472 ワード
gtestはgoogleのC++テストフレームで、とても使いやすいです.参考にしましたhttp://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html中の教程はgtestを使います.
google testのユニットテストはTEST()とTEST_だけ必要です.F()二つのマクロ、TEST:一回のテストの最初のパラメータを定義するのはテストケース名で、二つ目のパラメータはテスト名です.
RUN_を通るALL_TESTS()はそれらを実行します.すべてのテストが成功すれば、この関数は0に戻ります.そうでないと1に戻ります.RUN(u)を無視することはできません.ALL_TESTS()の戻り値は、gccでコンパイルエラーが発生します.このような設計の理由は、自動化テストサービスがテスト終了コードに基づいてテストを通過するかどうかを決定し、そのstdout/stder出力によるものではない.したがって、あなたのmain関数はRUN()に返さなければなりません.ALL_TESTS()の値.また、あなたはRUN_だけを呼び出すべきです.ALL_TESTS()は一回.何度もこの関数を呼び出すと、Google Testのいくつかの高次特性(例えば、スレッド安全死亡テストthread-safe death tests)と衝突しますので、サポートされていません.
testing::InitGoogleTest()関数は、解析コマンドラインの着信を担当するGoogle Testフラグは、RUN_uを呼び出している必要があります.ALL_TESTS()を呼び出す前に、表示を正しく初期化できません.
google testのユニットテストはTEST()とTEST_だけ必要です.F()二つのマクロ、TEST:一回のテストの最初のパラメータを定義するのはテストケース名で、二つ目のパラメータはテスト名です.
RUN_を通るALL_TESTS()はそれらを実行します.すべてのテストが成功すれば、この関数は0に戻ります.そうでないと1に戻ります.RUN(u)を無視することはできません.ALL_TESTS()の戻り値は、gccでコンパイルエラーが発生します.このような設計の理由は、自動化テストサービスがテスト終了コードに基づいてテストを通過するかどうかを決定し、そのstdout/stder出力によるものではない.したがって、あなたのmain関数はRUN()に返さなければなりません.ALL_TESTS()の値.また、あなたはRUN_だけを呼び出すべきです.ALL_TESTS()は一回.何度もこの関数を呼び出すと、Google Testのいくつかの高次特性(例えば、スレッド安全死亡テストthread-safe death tests)と衝突しますので、サポートされていません.
testing::InitGoogleTest()関数は、解析コマンドラインの着信を担当するGoogle Testフラグは、RUN_uを呼び出している必要があります.ALL_TESTS()を呼び出す前に、表示を正しく初期化できません.
#include "../include/mysql_connection_pool.h"
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <thread>
#include <gtest/gtest.h>
using std::cout;
using std::endl;
using std::thread;
const char* handler(MysqlPool* p_mypool, const char* sql)
{
//
MysqlObj* conn = p_mypool->getConnection();
if(!conn){
cout << "getConnection NULL pointer" << endl;
exit(-1);
}
QueryResult queryResult;
conn->ExecuteSql(sql, queryResult);
p_mypool->releaseConnection(conn);
for(int i=0;i<queryResult.getRowCount();i++)
{
for(int j=0;j<queryResult.getColumnCount();j++)
{
cout << queryResult.getElement(i,j) << " ";
}
cout << endl;
}
return "hello";
}
TEST(handlerTest, Test1)
{
MysqlPool mypool;
EXPECT_STREQ("hello", handler(&mypool, "select * from student"));
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
著作権声明:本文はブロガーのオリジナル文章で、ブロガーの許可なしに転載してはいけません.