Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an unittest environment for hardware class. #32

Merged
merged 7 commits into from
Dec 22, 2023
Merged

Conversation

ShotaAk
Copy link

@ShotaAk ShotaAk commented Dec 21, 2023

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

@ShotaAk ShotaAk added the Type: Maintenance Repository Maintenance label Dec 21, 2023
@ShotaAk ShotaAk requested a review from Kuwamai December 21, 2023 11:48
Copy link

@Kuwamai Kuwamai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

テストが通ることを確認しました。LGTMです。

@Kuwamai Kuwamai merged commit 366b22b into main Dec 22, 2023
3 checks passed
@Kuwamai Kuwamai deleted the add_hardware_test branch December 22, 2023 05:45
ShotaAk pushed a commit that referenced this pull request Mar 4, 2024
* Add write_data function

* Updating to use mock

* Test load_config_file successfuly

* Make all public method to virtual

* Remove unused heade file

* Refactoring to pass cpplint check

* Refactoring method name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Maintenance Repository Maintenance
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants