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
bUnitを救いたい@Fukuoka.NET #25
Search
Ryutaro Kimura
October 29, 2023
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
bUnitを救いたい@Fukuoka.NET #25
イベントページ:
https://fukuten.connpass.com/event/297072/
Ryutaro Kimura
October 29, 2023
More Decks by Ryutaro Kimura
See All by Ryutaro Kimura
Azureユーザー、AWSの話分かりたい@JAWS Festa 懇親会LT
ryutarokimura
0
120
可用性セットを検証してみた@GEEKERS NITE #3
ryutarokimura
0
420
Other Decks in Technology
See All in Technology
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
120
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
480
PLaMoを毎日の開発で使い育てていく
pfn
PRO
0
150
VPCセキュリティ対応の最新事情
nagisa53
2
350
QAタスクをスキル化したいときに考えること
aomoriringo
0
130
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
31
26k
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
180
Claude Mythos、Fable...フロンティアAIの最新動向と企業のセキュリティ対策
flatt_security
0
170
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
510
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
320
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
13年運用タイトルのサーバーサイドが辿り着いた現在地 ― モンスターストライクにおける技術・組織・AI活用から得た知見
mixi_engineers
PRO
1
340
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
570
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
A Soul's Torment
seathinner
6
3.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
400
The Invisible Side of Design
smashingmag
301
52k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
190
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
980
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
450
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
bUnitを救いたい ~BlazorのテストライブラリbUnitの紹介~ 木村 龍太郎 2023/10/26 Fukuoka.NET #25
2 自己紹介 ⚫ 木村龍太郎 (きむら りゅうたろう) ⚫ オルターブース 23卒 新入社員
⚫ jsakamotoさんと話すためにBlazor の 知識詰め込んだ ⚫ Blazor WASMの理解でお世話になりました ⚫ レンダリング方法がReactと違っておもろい @ryutaro_1019
bUnitってご存じですか
4 bUnitとは Razorコンポーネントの単体テストを実現するテストライブラリ ⚫ 公式の Microsoft テスト フレームワークではない。 ⚫ MSTest、NUnit、xUnit
などの汎用テスト フレームワークで動作する。 Counter.razor (Razorコンポーネント)の中身 【テストの例】 IncrementCount関数が実行されたとき 期待したUIに変わるかのテスト
今日話すこと
6 bUnitを救いたい ⚫ bUnitは記事がさみしい… ⚫ 上から四つ目で関係ない記事出るくらい(2023/10/26時点) ⚫ アルバイト時代の戦友(bUnit)を紹介したい ⚫ 半年くらいbUnit書いていた
今回の話を 通して bUnitの触りだけでも知ってもらい 知名度を上げる
7 基本的な書き方 @inherits TestContext @code { [Fact] public void CounterShouldIncrementWhenClicked()
{ // ①Arrange: Counter.razor コンポーネントをレンダリング var cut = Render(@<Counter />); // ②Act: テストしたいCSSセレクタ(クラス名もOK)を指定しクリック。 cut.Find("button").Click(); // ③Assert: アサートしたいCSSセレクタを指定しその内容を確認する。 cut.Find("p").MarkupMatches(@<p>Current count: 1</p>); } } ←テスト対象のコンポーネント(Counter.razor) bUnitのテストコード→
8 他にも書いたテストケース ⚫ ボタンを押したら画面遷移するテスト → “/” から “/user” へのルーティングのアサート ⚫
サインインしていたら〇〇させるテスト →セッションにサインイン状態をセットする → HTMLのアサート ⚫ 非同期処理のテスト →WaitForAssersion()で非同期処理の終了を待つ → HTMLのアサート くわしくは公式ドキュメントを!
9 漁った記事 ⚫ 基本はbUnitの公式ドキュメントを読む ⚫ 読み方 1. 左の目次からテストしたい処理を探す さっきの例だと[Verifying output]とか
2. コードと説明を読む ⚫ エラーの解決策はGithubのissue ⚫ bUnit作者のEgilさんが答えてくれてる (jsakamotoさんも待ってます) https://bunit.dev/docs/getting-started/index.html
10 まとめ ⚫ bUnitはRazorコンポーネントの単体テスト用ライブラリ ⚫ bUnitの学習は公式ドキュメントとの睨めっこ ⚫ Egilさんとjsakamotoさんを見習おう