Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これならやれる。 仮想環境を使った Unityによる単体テストへの挑戦
Search
misawa-san
October 30, 2022
Programming
770
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
これならやれる。 仮想環境を使った Unityによる単体テストへの挑戦
misawa-san
October 30, 2022
More Decks by misawa-san
See All by misawa-san
組込み向けテスト実行フレームワーク のご紹介
misawasan
1
3.9k
Introduction to Test Execution Automation Framework for Embedded Systems
misawasan
0
440
Other Decks in Programming
See All in Programming
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
スマートグラスで並列バイブコーディング
hyshu
0
140
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
CSC307 Lecture 17
javiergs
PRO
0
320
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
170
ふつうのFeature Flag実践入門
irof
7
3.9k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
200
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
140
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
570
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.1k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
340
JavaDoc 再入門
nagise
1
340
Featured
See All Featured
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Building an army of robots
kneath
306
46k
Designing for Performance
lara
611
70k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Scaling GitHub
holman
464
140k
Claude Code のすすめ
schroneko
67
230k
Mind Mapping
helmedeiros
PRO
1
250
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
590
Chasing Engaging Ingredients in Design
codingconduct
0
220
Transcript
これならやれる。 仮想環境を使った Unityによる単体テストへの挑戦 2022/10/30 組込みCI研究WG 見澤 1
2 C言語向けテストハーネスUnityは、 インストールが意外と大変です。 ですが、仮想環境(Docker)を使うと インストールが楽です。 今回はDockerが使える環境をなんとか用意でき る人向けにネイティブCコンパイラとUnityを使った 単体テストの導入方法の紹介をします。 次回はCMOCKを活用し、依存関係があるモジュー ルの単体テストの実施方法を紹介します。
▪参考文献 James W. Grenning (著), 蛸島 昭之 (監修), 笹井 崇司
(翻訳). テスト駆動開発による組み込みプログラミング ―C言語とオブジェクト指向で学ぶアジャイルな設計, オライリージャパン, 2013, 36p ▪参考Webサイト https://github.com/ThrowTheSwitch/ https://goyoki.hatenablog.com/entry/20120519/1337441410 https://qiita.com/iwatake2222/items/396959d1d7dffee479f7 https://futurismo.biz/archives/1281/ 3
▪前提 dockerが使える環境を用意する。 <私見> WindowsにWSL2をインストールして Linuxを使えるようにするのが良いと思います。 MACは使ったことないので、分かりません。 4
▪構成 プロダクトコード Docker(仮想環境) テストコード ローカル コンテナ (MadScienceLabDocker) Unity、 CMock、 Ceedling
ネイティブCコンパイラ マウント コーディング、コード修正 単体テスト実行 (コンテナ内 からローカル のディレクトリ を参照する) 5
理由 1.Linuxを使うスキルに自信が無い場合、 一からUnityが使える環境を 自分で準備できない。または時間がかかる。 2.MadScienceLabDockerを使うと、 Unityを含めた便利ツールが すぐ使えるようになる。 ▪MadScienceLabDocker Unityが使える環境を準備するのに、 本Dockerイメージを使うのがお勧め。(取得方法:次ページ)
6
▪MadScienceLabDockerの取得方法 $ git clone https://github.com/ThrowTheSwitch/MadScienceLabDocker.git 7
▪コンテナの実行方法 docker run -it --rm -v <local project path>:/project throwtheswitch/madsciencelab[:tag]
(例) 1.ローカルのMadScienceLabDockerディレクトリに移動 2.$docker run -it --rm -v ~/environment/dev/unittest2/hoge:/project/hoge throwtheswitch/madsciencelab 8
▪新規プロジェクト作成 ceedling new YourNewProjectName (例) 1.コンテナでマウントしたhogeディレクトリの中にあるhoge3ディレクトリに移動 2.新規プロジェクト作成 $ceedling new sample
テンプレート(src、test、etc)が入った、 指定したsampleという名前のディレクトリが作られる。 9
▪テストコードの作成 ローカルでテストコードを作成する。 テストコード 10 テストコード
▪プロダクトコードの作成 ローカルでプロダクトコードを作成する。 プロダクトコード 11 プロダクトコード
▪単体テスト実行 コンテナでceedlingコマンドを実行。 プロダクトコードの初期化 処理が未実装のため、 テストに失敗する。 プロダクトコード テストコード 12 初期化処理が未実装
▪プロダクトコードの修正 ローカルでプロダクトコードを修正する。 修正前 修正後 13
▪単体テストの再実行 コンテナでceedlingコマンドを実行。 14 テスト成功 修正前 修正後 テスト失敗
以上 15