14

失敗したテストのみを表示するオプションはありますか? これを実現するにはギターを使用するように切り替える必要がありましたが、コマンド ライン ツールが恋しいです。

4

6 に答える 6

9

私は同じ問題に遭遇しました - 私は他の多くの人々が持っていると確信しています。だから私はこれを作成しました:

https://gist.github.com/elliotchance/8215283

かなり貼り付けて再生する必要があります。

于 2014-01-02T05:05:21.890 に答える
8

これを実現するには2つの方法があります。

1つ目は、独自のイベントリスナーを作成することです。

https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#defining-event-listeners

もう1つの方法は、googletestイベントリスナーが受け取る入力をフィルタリングすることです。

このアプローチでは、現在のイベントリスナーを削除し、独自のリスナーと交換します

testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners();
testing::TestEventListener* listener = listeners.Release(listeners.default_result_printer());
listeners.Append(new FailurePrinter(listener));

ここで、FailurePrinterは独自のイベントリスナークラスです。

このクラスは次のようになります

class FailurePrinter : public ::testing::TestEventListener {

public:
FailurePrinter(TestEventListener* listener) : TestEventListener() {_listener = listener;}

virtual void OnTestProgramStart(const UnitTest& unit_test);
virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
virtual void OnTestCaseStart(const TestCase& test_case);
virtual void OnTestStart(const TestInfo& test_info);
virtual void OnTestPartResult(const TestPartResult& result);
virtual void OnTestEnd(const TestInfo& test_info);
virtual void OnTestCaseEnd(const TestCase& test_case);
virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
virtual void OnTestProgramEnd(const UnitTest& unit_test);

protected:
testing::TestEventListener* _listener;
};

次に、すべてのメソッドを実装する必要があります。

googlesイベントリスナーが何かを印刷する方法が好きな場合は、呼び出しを_listenerに委任するだけです。

または、結果を変更できます。例えば:

void FailurePrinter::OnTestPartResult(const TestPartResult& test_part_result)
{
  if (test_part_result.failed())
  {
      _listener->OnTestPartResult(test_part_result);
      printf("\n");
  }
}

Testfailuresのみを出力します。

于 2012-03-26T12:34:01.777 に答える
-1

ドキュメントによると、テスト イベントを使用して出力を変更できます。ここを見てください (例もあります): https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#extending-googletest-by-handling-test-events

于 2012-03-15T13:07:15.867 に答える