• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/test/base/chrome_unit_test_suite.h"
6 
7 #include "chrome/test/base/testing_browser_process.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace {
11 
12 // Creates a TestingBrowserProcess for each test.
13 class ChromeUnitTestSuiteInitializer : public testing::EmptyTestEventListener {
14  public:
ChromeUnitTestSuiteInitializer()15   ChromeUnitTestSuiteInitializer() {}
~ChromeUnitTestSuiteInitializer()16   virtual ~ChromeUnitTestSuiteInitializer() {}
17 
OnTestStart(const testing::TestInfo & test_info)18   virtual void OnTestStart(const testing::TestInfo& test_info) OVERRIDE {
19     TestingBrowserProcess::CreateInstance();
20   }
21 
OnTestEnd(const testing::TestInfo & test_info)22   virtual void OnTestEnd(const testing::TestInfo& test_info) OVERRIDE {
23     TestingBrowserProcess::DeleteInstance();
24   }
25 
26  private:
27   DISALLOW_COPY_AND_ASSIGN(ChromeUnitTestSuiteInitializer);
28 };
29 
30 }  // namespace
31 
ChromeUnitTestSuite(int argc,char ** argv)32 ChromeUnitTestSuite::ChromeUnitTestSuite(int argc, char** argv)
33     : ChromeTestSuite(argc, argv) {}
34 
~ChromeUnitTestSuite()35 ChromeUnitTestSuite::~ChromeUnitTestSuite() {}
36 
Initialize()37 void ChromeUnitTestSuite::Initialize() {
38   // Add an additional listener to do the extra initialization for unit tests.
39   // It will be started before the base class listeners and ended after the
40   // base class listeners.
41   testing::TestEventListeners& listeners =
42       testing::UnitTest::GetInstance()->listeners();
43   listeners.Append(new ChromeUnitTestSuiteInitializer);
44 
45   ChromeTestSuite::Initialize();
46 }
47