OpenJDKにはjtregのテストとgtest(GoogleTest)のテストがあるのですが、gtestの方です。ドキュメントにあるmake test-only TEST=
の形式ですぐに動かせなかったので、同僚に教えてもらった他の実行方法をメモとして残します。
セットアップ
GoogleTestをダウンロードします。バージョンはOpenJDKのドキュメントにあるものを使いましょう。 この記事を書いている時点では1.8.1
でした。GitHubからクローンでもソースのダウンロードでもよいです。
OpenJDKのディレクトリでconfigure
します。
$ bash configure --with-gtest=[googletestのディレクトリ] --enable-debug --with-native-debug-symbols=internal
[googletestのディレクトリ]とは、ダウンロードして展開したトップディレクトリで大丈夫です。トップディレクトリの中にgoogletest
とgooglemock
ディレクトリが含まれている構成です。
make images
します。
gtestの実行
今回の方法はgtestLauncher
で実行するものです。buildディレクトリ以下にあります。-jdk
オプションで使用するJDKを指定します。
$ ./build/linux-x86_64-server-fastdebug/hotspot/variant-server/libjvm/gtest/gtestLauncher -jdk:./build/linux-x86_64-server-fastdebug/jdk --gtest_filter=LogConfigurationTest.parse_empty_command_line_arguments_vm Note: Google Test filter = LogConfigurationTest.parse_empty_command_line_arguments_vm [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from LogConfigurationTest [ RUN ] LogConfigurationTest.parse_empty_command_line_arguments_vm [ OK ] LogConfigurationTest.parse_empty_command_line_arguments_vm (0 ms) [----------] 1 test from LogConfigurationTest (311 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (311 ms total) [ PASSED ] 1 test.
gtest_filter
で実行するテストをフィルタリングします。ワイルドカードも使えます。ただ、gtestの実行はかなり高速なので、細かくフィルタリングする必要はないかもしれません。--gtest_list_tests
を実行すると、テストの一覧が見れます。