0

私のオフィスでは、データベース接続をチェックしてテストする基本的な領域でいくつかのテストケースを書くように頼まれました. sociを使用したC ++のGtest(googleテスト)、

だから今、私はこのようなテストケースを持っています、

テーブルがドロップされたかどうかに関係なく、

だから私はこのようなコードを書いた、

TEST(CheckNull, DropTable) 
 {
    bool output = true;
    session sql(oracle, "service=LOCAL user=ROOT password=123");
    string query = "drop table GTestAutomation";
    sql<<query;
    EXPECT_EQ(true,output);
}

SQLステートメントが正常に実行されたかどうかを確認したいのですが、このようなことはできますか?

if(sql<<query)
{
  output = true ;
}
else
{
  output = false;
}

こんな風に自分の状態を確認できるEXPECT_EQ(true,output);ように。

助けが必要です。正しいやり方や答えがわからない場合は、コメントを入れないでください。

ありがとう

4

1 に答える 1

0

ステートメントが正常に実行されなかった場合、soci はsoci::soci_error例外をスローしますが、これをキャッチできます。したがって、次のように書くことができます。

TEST(CheckNull, DropTable) 
 {
    bool output = true;
    session sql(oracle, "service=LOCAL user=ROOT password=123");
    string query = "drop table GTestAutomation";
    try{
        sql<<query;
    } catch (soci::soci_error &e) {
        output = false;
    }

    EXPECT_EQ(true,output);
}
于 2015-08-11T09:54:55.520 に答える