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
810
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
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
1.1k
Jetpack Compose メカニズム
skydoves
0
420
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
260
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
210
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.8k
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
Heart of Swift Concurrency
koher
0
780
Family mrubyの進捗
kishima
1
120
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
230
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
190
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.8k
エンジニアに許された特別な時間の終わり
watany
109
250k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Automating Front-end Workflow
addyosmani
1369
210k
The Limits of Empathy - UXLibs8
cassininazir
1
670
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
540
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
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