[Google Test] 選擇性的執行某些 Unit-test case

[Google Test] 選擇性的執行某些 Unit-test case

今天在跑 unit-testing 程式時,發現在跑到某個 test case 時會一直出錯,

但是如果每次都跑全部的 test case 又頗浪費時間,

於是來找找看 Google Test 如何選擇性的執行某些特定的 test case…

 

找了一下,原來 Google Test 編譯出來的 test program 本身就有提供這項功能,

而且用 -h 選項就可以列出所有支援的選項:

testuser@localhost ~ $ ./TestScan -h
This program contains tests written using Google Test. You can use the
following command line flags to control its behavior:
Test Selection:
--gtest_list_tests
List the names of all tests instead of running them. The name of
TEST(Foo, Bar) is "Foo.Bar".
--gtest_filter=POSTIVE_PATTERNS[-NEGATIVE_PATTERNS]
Run only the tests whose name matches one of the positive patterns but
none of the negative patterns. '?' matches any single character; '*'
matches any substring; ':' separates two patterns.
--gtest_also_run_disabled_tests
Run all disabled tests too.
Test Execution:
--gtest_repeat=[COUNT]
Run the tests repeatedly; use a negative count to repeat forever.
--gtest_shuffle
Randomize tests' orders on every iteration.
  --gtest_random_seed=[NUMBER]
      Random number seed to use for shuffling test orders (between 1 and
      99999, or 0 to use a seed based on the current time).
Test Output:
  --gtest_color=(yes|no|auto)
      Enable/disable colored output. The default is auto.
  --gtest_print_time=0
      Don't print the elapsed time of each test.
--gtest_output=xml[:DIRECTORY_PATH/|:FILE_PATH]
Generate an XML report in the given directory or with the given file
name. FILE_PATH defaults to test_details.xml.
--gtest_stream_result_to=HOST:PORT
Stream test results to the given server.
Assertion Behavior:
--gtest_death_test_style=(fast|threadsafe)
Set the default death test style.
--gtest_break_on_failure
Turn assertion failures into debugger break-points.
--gtest_throw_on_failure
Turn assertion failures into C++ exceptions.
--gtest_catch_exceptions=0
Do not report exceptions as test failures. Instead, allow them
to crash the program or throw a pop-up (on Windows).
Except for --gtest_list_tests, you can alternatively set the corresponding
environment variable of a flag (all letters in upper-case). For example, to
disable colored text output, you can either specify --gtest_color=no or set
the GTEST_COLOR environment variable to no.
For more information, please read the Google Test documentation at
http://code.google.com/p/googletest/. If you find a bug in Google Test
(not one in your own code or tests), please report it to
<[email protected]>.

 

像是執行 –gtest_list_tests 就能列出這個測試程式裡所有的 test case:

testuser@localhost ~ $ ./TestScan --gtest_list_tests
CommonTest.
WStrToUTF8Str
UTF8StrToWStr
ScanFileTest.
Ctor
ScanInvalidParam
PostProcess

 

而用 –gtest_filter 選項可以決定要執行的 test case,

例如下面的例子是執行 test case 名稱裡有 PostProcess 字眼的 test case:

testuser@localhost ~ $ ./TestScan --gtest_filter=*PostProcess*
Note: Google Test filter = *PostProcess*
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from ScanFileTest
[ RUN      ] ScanFileTest.PostProcess
[       OK ] ScanFileTest.PostProcess (0 ms)
[----------] 1 test from ScanFileTest (1 ms total)
[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (1570 ms total)
[  PASSED  ] 1 test.

 

參考資料:

stackoverflow: How to run specific test cases in GoogleTest

Google Test: Running a Subset of the Tests

 

(本頁面已被瀏覽過 1,901 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料