Yash Tibrewal 8eb2e13a6e C++ xDS interop test server changes (#25633) 4 سال پیش
..
client 377fe6095a Upgrade clang-tidy and clang-format to 11 (#25590) 4 سال پیش
cocoapods 86050be0cf Clean up DEPLOYMENT_TARGET 5 سال پیش
codegen 27e1c1c56d clang-tidy: enable google-readability-braces-around-statements 4 سال پیش
common 1835f00ef1 Revert "Revert "Made grpc_core::Mutex compatible to absl::Mutex" (#25537)" (#25549) 4 سال پیش
end2end a214b52998 Disable channelz_service_test for iOS (#25639) 4 سال پیش
ext 9bd7c4917a Fix unused-parameter warning 4 سال پیش
grpclb 62ac3f075a Added call to grpc::testing::TestEnvironment in tests 5 سال پیش
interop 8eb2e13a6e C++ xDS interop test server changes (#25633) 4 سال پیش
ios f4e55b85bc Replace disrespectful term 4 سال پیش
microbenchmarks 0901c9914b Remove CAS loops in global subchannel pool and simplify subchannel refcounting (#25485) 4 سال پیش
naming f4e55b85bc Replace disrespectful term 4 سال پیش
performance e7434d385e Fix by tidy-modernize-use-override 5 سال پیش
qps 377fe6095a Upgrade clang-tidy and clang-format to 11 (#25590) 4 سال پیش
server f171a6689e Fix StatusCode 4 سال پیش
test 165ee5007a Replaced grpc::string with std::string 5 سال پیش
thread_manager 131579d52d Roll forward of commit 7883b51: Use abseil's flags in tests. 4 سال پیش
util f4e55b85bc Replace disrespectful term 4 سال پیش
README-iOS.md b436758b14 Added documentation for C++ tests on iOS 6 سال پیش

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.