4

2回/多くの異なるテストをgtestで2回の反復で実行する必要があるとします。それで、同じことを実行する方法は?私は自分のアプローチを試しましたが、失敗します。私が書いた、

::testing::GTEST_FLAG(repeat) = 2; //may be 2 or 3 or so on...
switch(i) //int i = 1;
{
case 1:
::testing::GTEST_FLAG(filter) = "*first*:*second*";
i++; break;
case 2:
::testing::GTEST_FLAG(filter) = "*third*:*fourth*";
i++; break;
and so on............

しかし、Googleのテストはとだけを取り、"*first*:*second*"2回実行されます。私を助けてください。私の要件は、Gtestがすべてのテストケースを1つずつ実行する必要があることです。たとえば、最初に実行されcase 1:、次に実行case 2:されます。

4

2 に答える 2

5

私はあなたがこれを使用してこれを行うことができるとは思わない::testing::GTEST_FLAG(repeat)

ただし、次のような方法で目標を達成できます。

#include "gtest/gtest.h"

int RunTests(int iteration) {
  switch(iteration) {
    case 1:  ::testing::GTEST_FLAG(filter) = "*first*:*second*"; break;
    case 2:  ::testing::GTEST_FLAG(filter) = "*third*:*fourth*"; break;
    default: ::testing::GTEST_FLAG(filter) = "*";
  }
  return RUN_ALL_TESTS();
}

int main(int argc, char **argv) {
  ::testing::InitGoogleTest(&argc, argv);
  int final_result(0);
  for (int i(0); i < 3; ++i) {
    int result(RunTests(i));
    if (result != 0)
      final_result = result;
  }
  return final_result;
}

gtestが使用RUN_ALL_TESTS()時の戻り値をどのように計算するかはわかりませんGTEST_FLAG(repeat)が、ここでmain0すべてのテストに合格した場合に戻ります。それ以外の場合は、RUN_ALL_TESTS()呼び出しのゼロ以外の最後の値を返します。

于 2012-08-28T02:33:23.113 に答える
3
int main(int argc, char **argv) {
    int i = 1;
        vector<string> str;
        str.push_back("*first*:*second*");
        str.push_back("*third*:*fourth*");
        str.push_back("*fifth.fifthtestname*");
        for(i = 0; i != str.size(); i++)
        {
            ::testing::GTEST_FLAG(filter) = str.at(i);
             InitGoogleTest(&argc, argv);
             RUN_ALL_TESTS();
            // getchar();
        }
        getchar();
}
于 2012-08-29T06:55:29.637 に答える