Dockerファイルを追加する

This commit is contained in:
ry.yamafuji 2025-12-11 02:12:09 +09:00
parent 8ca1878481
commit 34df7c6785
3 changed files with 61 additions and 2 deletions

19
Dockerfile.testtools Normal file
View File

@ -0,0 +1,19 @@
FROM debian:stable-slim
RUN apt update && apt install -y \
build-essential \
libgtest-dev \
cmake \
git \
python3 \
wget
# GoogleTest をビルド(Debianはヘッダだけなので手動ビルドが必要)
RUN cd /usr/src/gtest && \
cmake CMakeLists.txt && \
make && \
cp *.a /usr/lib
WORKDIR /work
ENTRYPOINT []

View File

@ -8,6 +8,7 @@
- [clang-tidy の使い方(C++向け)](#clang-tidy-の使い方c向け)
- [ccppcheck の使い方C / C++ 両対応)](#ccppcheck-の使い方c--c-両対応)
- [テスト](#テスト)
- [テスト環境を構築する](#テスト環境を構築する)
- [Doc(ドキュメンテーション)](#docドキュメンテーション)
- [環境構築](#環境構築)
- [Dockerを活用する](#dockerを活用する-1)
@ -137,7 +138,46 @@ cppcheck --enable=warning,style,performance,portability src/
## テスト
TODO: TBD
テストフレームワークの選定
* **C**
* Unity:
* 最軽量・C専用
* C言語の組込み開発でもよく使われる
* シングルヘッダに近い軽量テストツール
* doctest / googletest の C版のような位置付け
* CMocka: Unity より“しっかりしたテスト”をしたいときに最適
* Criterion: C言語でも“近代的なテスト開発”をしたい場合に良い
* **C++**
* GoogleTest:
* C++テストで最も使われる
* 機能が豊富モック、パラメトリック、DeathTestなど
* Catch2: シンプルで読みやすいテストを作りたい人向け
* doctest: 個人開発や高速実行が必要なプロジェクトに最適
### テスト環境を構築する
* Unity(C言語の軽量テストフレームワーク)はパッケージとして提供されていません。https://github.com/ThrowTheSwitch/Unityから必要なファイルをダウンロードして使う
```sh
# unity.c,unity.h,unity_internals.h
git clone https://github.com/ThrowTheSwitch/Unity /opt/unity
```
* Alpine(musl libc)ではGTestのABIが合わず、gtest が正常にビルドできないケースが多い
* doctestとCatch2は普通にビルドで使えます
[Dockerfileはこちら](../Dockerfile.testtools)
テスト用のDockerイメージをビルドする
```sh
docker build -f Dockerfile.testtools -t c-test-tools .
```
## Doc(ドキュメンテーション)