Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
これならやれる。 仮想環境を使った Unityによる単体テストへの挑戦
Search
misawa-san
October 30, 2022
Programming
820
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
4k
Introduction to Test Execution Automation Framework for Embedded Systems
misawasan
0
450
Other Decks in Programming
See All in Programming
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Performance Optimization With LLMs
xleitix
0
140
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
800
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
R8 の設定見直しでアプリサイズ削減
andpad
0
220
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
980
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Odyssey Design
rkendrick25
PRO
2
880
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Writing Fast Ruby
sferik
630
63k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Product Roadmaps are Hard
iamctodd
55
13k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
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