browser_test.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 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#ifndef CONTENT_TEST_BROWSER_TEST_H_ 6#define CONTENT_TEST_BROWSER_TEST_H_ 7 8// We only want to use InProcessBrowserTest in test targets which properly 9// isolate each test case by running each test in a separate process. 10// This way if a test hangs the test launcher can reliably terminate it. 11// 12// InProcessBrowserTest cannot be run more than once in the same address space 13// anyway - otherwise the second test crashes. 14#if defined(HAS_OUT_OF_PROC_TEST_RUNNER) 15 16#include "base/compiler_specific.h" 17 18#define IN_PROC_BROWSER_TEST_(test_case_name, test_name, parent_class,\ 19 parent_id)\ 20class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ 21 public:\ 22 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ 23 protected:\ 24 virtual void RunTestOnMainThread() OVERRIDE;\ 25 private:\ 26 virtual void TestBody() OVERRIDE {}\ 27 static ::testing::TestInfo* const test_info_;\ 28 GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 29 GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ 30};\ 31\ 32::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ 33 ::test_info_ =\ 34 ::testing::internal::MakeAndRegisterTestInfo(\ 35 #test_case_name, #test_name, "", "", \ 36 (parent_id), \ 37 parent_class::SetUpTestCase, \ 38 parent_class::TearDownTestCase, \ 39 new ::testing::internal::TestFactoryImpl<\ 40 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ 41void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread() 42 43#define IN_PROC_BROWSER_TEST_F(test_fixture, test_name)\ 44 IN_PROC_BROWSER_TEST_(test_fixture, test_name, test_fixture,\ 45 ::testing::internal::GetTypeId<test_fixture>()) 46 47#define IN_PROC_BROWSER_TEST_P(test_case_name, test_name) \ 48 class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ 49 : public test_case_name { \ 50 public: \ 51 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ 52 protected: \ 53 virtual void RunTestOnMainThread() OVERRIDE; \ 54 private: \ 55 virtual void TestBody() OVERRIDE {} \ 56 static int AddToRegistry() { \ 57 ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ 58 GetTestCasePatternHolder<test_case_name>(\ 59 #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ 60 #test_case_name, \ 61 #test_name, \ 62 new ::testing::internal::TestMetaFactory< \ 63 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ 64 return 0; \ 65 } \ 66 static int gtest_registering_dummy_; \ 67 GTEST_DISALLOW_COPY_AND_ASSIGN_(\ 68 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ 69 }; \ 70 int GTEST_TEST_CLASS_NAME_(test_case_name, \ 71 test_name)::gtest_registering_dummy_ = \ 72 GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ 73 void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::RunTestOnMainThread() 74 75#endif // defined(HAS_OUT_OF_PROC_TEST_RUNNER) 76 77#endif // CONTENT_TEST_BROWSER_TEST_H_ 78