Add an unittest environment for hardware class. #32
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this implement/fix?
Hardware classのためのユニットテスト環境を追加します。
Hardwareクラスの変更について
Hardwareのテストをする際に、通信部分(Communicator)の処理を制御しなければなりません。
そのため、Communicatorをmock化します。
また、mock化したCommunicatorをセットできるコンストラクタを追加します。
Hardware外部でCommunicatorを悪用されないように、unique_ptrで渡しています。
(Hardware内では、通信機能を共有するためshared_ptrのままです)
Communicatorクラスの変更について
mock化するため、全てのpublic関数を仮想関数化しました。
ユニットテストについて
この変更ではユニットテスト環境を用意することを目的にしています。
そのため、load_config_file、connect、disconnectのみをテストします。
mock用のライブラリFakeItについて
google testでもmock化はできますが、mockクラスが必要になります。
そのため、mockクラスを作らなくて良い、FakeItを採択しました。
FakeItはヘッダーオンリーなライブラリなので、CMakeListsのFetchContent機能でgit cloneできます。
リポジトリ:https://github.com/eranpeer/FakeIt
使い方:https://github.com/eranpeer/FakeIt/wiki/Quickstart
Does this close any currently open issues?
いいえ
How has this been tested?
ローカル環境で
./run_test_library.bash
が通ることを確認しました。また、CIでのテストも確認します。
Any other comments?
Checklists