Mark D. Roth b607080400 Use a global atomic for circuit breaking call counter. 5 gadi atpakaļ
..
client b62d5c7eaa Allow channel args to modify service config parsing behavior. 5 gadi atpakaļ
cocoapods 86050be0cf Clean up DEPLOYMENT_TARGET 5 gadi atpakaļ
codegen 25cbc854d2 Fix compiler_test_golden 5 gadi atpakaļ
common 8e9e895ffc Replace grpc_shutdown_blocking with grpc_shutdown 5 gadi atpakaļ
end2end b607080400 Use a global atomic for circuit breaking call counter. 5 gadi atpakaļ
ext e7434d385e Fix by tidy-modernize-use-override 5 gadi atpakaļ
grpclb 62ac3f075a Added call to grpc::testing::TestEnvironment in tests 5 gadi atpakaļ
interop e7434d385e Fix by tidy-modernize-use-override 5 gadi atpakaļ
ios 86050be0cf Clean up DEPLOYMENT_TARGET 5 gadi atpakaļ
microbenchmarks a62a70207c Merge pull request #24448 from veblush/clang-format-8 5 gadi atpakaļ
naming 6ae8463500 Fix by modernize-make-unique 5 gadi atpakaļ
performance e7434d385e Fix by tidy-modernize-use-override 5 gadi atpakaļ
qps 84df61b31a Merge pull request #24453 from veblush/tidy-modernize-make-unique 5 gadi atpakaļ
server 6ae8463500 Fix by modernize-make-unique 5 gadi atpakaļ
test 165ee5007a Replaced grpc::string with std::string 5 gadi atpakaļ
thread_manager c34bef4ca4 Format all Bazel files with buildifier 6 gadi atpakaļ
util bba8facb4a Merge pull request #24456 from veblush/tidy-readability-redundant-smartptr-get 5 gadi atpakaļ
README-iOS.md b436758b14 Added documentation for C++ tests on iOS 6 gadi atpakaļ

README-iOS.md

C++ tests on iOS

GTMGoogleTestRunner is used to convert googletest cases to XCTest that can be run on iOS. GTMGoogleTestRunner doesn't execute the main function, so we can't have any test logic in main. However, it's ok to call ::testing::InitGoogleTest in main, as GTMGoogleTestRunner calls InitGoogleTest. grpc::testing::TestEnvironment can also be called from main, as it does some test initialization (install crash handler, seed RNG) that's not strictly required to run testcases on iOS.

Porting exising C++ tests to run on iOS

Please follow these guidelines when porting tests to run on iOS:

  • Tests need to use the googletest framework
  • Any setup/teardown code in main needs to be moved to SetUpTestCase/TearDownTestCase, and TEST needs to be changed to TEST_F.
  • Death tests are not supported on iOS, so use the *_IF_SUPPORTED() macros to ensure that your code compiles on iOS.

For example, the following test

TEST(MyTest, TestOne) {
  ASSERT_DEATH(ThisShouldDie(), "");
}

int main(int argc, char** argv) {
  grpc::testing::TestEnvironment env(argc, argv);
  ::testing::InitGoogleTest(&argc, argv);
  grpc_init();
  return RUN_ALL_TESTS();
  grpc_shutdown();
}

should be changed to

class MyTest : public ::testing::Test {
 protected:
  static void SetUpTestCase() { grpc_init(); }
  static void TearDownTestCase() { grpc_shutdown(); }
};

TEST_F(MyTest, TestOne) {
  ASSERT_DEATH_IF_SUPPORTED(ThisShouldDie(), "");
}

int main(int argc, char** argv) {
  grpc::testing::TestEnvironment env(argc, argv);
  ::testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

Limitations

Due to a limitation in GTMGoogleTestRunner, SetUpTestCase/TeardownTestCase will be called before/after every individual test case, similar to SetUp/TearDown.