SlideShare a Scribd company logo
1 of 7
Windowsアプリ開発の実
務で使うUnitTest
2020/11/5 須藤圭太
1
自己紹介
 ID:suusanex( connpass・Twitter・GitHub共通)
 名前:須藤圭太
 サイエンスパーク株式会社という独立系ソフトウェアベンダーに所属
 4年ほど受託開発で、上流から下流まで全部を回す
 ここ6年ほどは、自社製品開発を担当
 Windowsアプリ開発のネタが多い
 勉強会もやってます、最近はオンラインで
 https://yokohama-win-dev-tips.connpass.com/
今日の内容
• UT(UnitTest)のフレームワークはたくさんあるし、使い方も情報は多い
• 実務にどう組み込むか、となると難しい
• Windowsアプリ開発の実務でどう使ってみたかという事例を紹介します
• 今回は、理論的な説明は軽く済ませて、実際のソースコードの説明をします
• 質問・意見歓迎。実務への導入で困ってる人いたら相談しましょう
3
対象アプリ
 WPFのWindowsアプリケーション
 入出力のパスをUIで与え、実行ボタンを押すとzip圧縮したファイルを出力する
 成功したら、成功したことをメッセージボックスに表示する
 次のコードを使うので、これを見ながら聞くと分かりやすい(イベントページ
にも記載あり)
 https://github.com/suusanex/sample-csharp-desktopapp-unittest-type2
4
UTの考え方
 UIのテストは:しない
 OSの操作のテストは:部分的にする
 パラメータを外出しにすることでテスト環境で実行できるものはそのまま
 パラメータを外出しにできないものはI/Fを挟んでモックにする
 ビジネスロジックのテストは:する。ここがメイン(Zip圧縮処理)
5
ソースコードの説明
 実装コード
 テストコード
 スタブを実現する仕組み
6
まとめ
 UI付きWindowsアプリのような実務でありがちなものでも、ちゃんとUIやテス
トしづらい処理をモックに切り離せば、UnitTestができる
 コード量が多く、コード本体の実装と同じくらいの時間はかかる
 テストコードによる再帰テストの効果は高いので、このように工夫して取り入
れていきたい
7

More Related Content

What's hot

Windows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールjz5 MATSUE
 
GR Family 用ライブラリの紹介
GR Family 用ライブラリの紹介GR Family 用ライブラリの紹介
GR Family 用ライブラリの紹介Yoshitaka Seo
 
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Kenji Kinukawa
 
Universal Windows app 入門
Universal Windows app 入門Universal Windows app 入門
Universal Windows app 入門一希 大田
 
SNSとコミュニティ活動 でシームレスに働こう - エンジニアとしての私の働き方 - :Developers Summit 2016 FUKUOKA
SNSとコミュニティ活動でシームレスに働こう- エンジニアとしての私の働き方 -:Developers Summit 2016 FUKUOKASNSとコミュニティ活動でシームレスに働こう- エンジニアとしての私の働き方 -:Developers Summit 2016 FUKUOKA
SNSとコミュニティ活動 でシームレスに働こう - エンジニアとしての私の働き方 - :Developers Summit 2016 FUKUOKARina Fukuda
 
Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介Kenji Kinukawa
 
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会Rina Fukuda
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編Yusuke Ito
 
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみたFriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみたNakaiYusaku
 
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話keitasudo1
 
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼンhiroyuki Yamamoto
 
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform appVisual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app一希 大田
 
Windows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますWindows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますTomokazu Kizawa
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふうTomokatsu Iguchi
 
20150530 めとべや東京8 universal windows platform appの画面開発
20150530 めとべや東京8 universal windows platform appの画面開発20150530 めとべや東京8 universal windows platform appの画面開発
20150530 めとべや東京8 universal windows platform appの画面開発一希 大田
 
プログラミングのきっかけ
プログラミングのきっかけプログラミングのきっかけ
プログラミングのきっかけ一希 大田
 
プログラミング手法について調べてみた
プログラミング手法について調べてみたプログラミング手法について調べてみた
プログラミング手法について調べてみたOgataAyaka
 

What's hot (20)

Windows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストールWindows8.1(64bit) にVB6をインストール
Windows8.1(64bit) にVB6をインストール
 
GR Family 用ライブラリの紹介
GR Family 用ライブラリの紹介GR Family 用ライブラリの紹介
GR Family 用ライブラリの紹介
 
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
 
Universal Windows app 入門
Universal Windows app 入門Universal Windows app 入門
Universal Windows app 入門
 
SNSとコミュニティ活動 でシームレスに働こう - エンジニアとしての私の働き方 - :Developers Summit 2016 FUKUOKA
SNSとコミュニティ活動でシームレスに働こう- エンジニアとしての私の働き方 -:Developers Summit 2016 FUKUOKASNSとコミュニティ活動でシームレスに働こう- エンジニアとしての私の働き方 -:Developers Summit 2016 FUKUOKA
SNSとコミュニティ活動 でシームレスに働こう - エンジニアとしての私の働き方 - :Developers Summit 2016 FUKUOKA
 
Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介Plannahプロジェクトの開発環境とdeploy gateの紹介
Plannahプロジェクトの開発環境とdeploy gateの紹介
 
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
九州ソフトウェアテスト勉強会紹介LT:Developers Summit 2016 FUKUOKA懇親会
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
FriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみたFriendlyとTestAssistantProでテスト自動化やってみた
FriendlyとTestAssistantProでテスト自動化やってみた
 
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
WCFのパイプ通信を .NET 5に向けてgRPCへ置き換える話
 
Techhills 6.18
Techhills 6.18Techhills 6.18
Techhills 6.18
 
Caketest
CaketestCaketest
Caketest
 
C#でユニットテストを使う
C#でユニットテストを使うC#でユニットテストを使う
C#でユニットテストを使う
 
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
名古屋アジャイル勉強会トヨタ生産方式に学ぶカイゼン
 
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform appVisual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
 
Windows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますWindows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話します
 
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
小規模開発のためのタスク管理 「Trello」を上手に使うための 3つのくふう
 
20150530 めとべや東京8 universal windows platform appの画面開発
20150530 めとべや東京8 universal windows platform appの画面開発20150530 めとべや東京8 universal windows platform appの画面開発
20150530 めとべや東京8 universal windows platform appの画面開発
 
プログラミングのきっかけ
プログラミングのきっかけプログラミングのきっかけ
プログラミングのきっかけ
 
プログラミング手法について調べてみた
プログラミング手法について調べてみたプログラミング手法について調べてみた
プログラミング手法について調べてみた
 

Similar to Windowsアプリ開発の実務で使うUnitTest

テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜Takao Sumitomo
 
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしようC++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしようStudy Group by SciencePark Corp.
 
Visual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CDVisual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CDShinya Nakajima
 
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2潤司 渡部
 
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムHour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムYuta Tonegawa
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうkeitasudo1
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すStudy Group by SciencePark Corp.
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!Masahiko Sato
 
OpenChain Japan Work Group Meeting #20 - Case Studies
OpenChain Japan Work Group Meeting #20 - Case StudiesOpenChain Japan Work Group Meeting #20 - Case Studies
OpenChain Japan Work Group Meeting #20 - Case StudiesShane Coughlan
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションKaoru NAKAMURA
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションVisual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションKaoru NAKAMURA
 
Visual Studio App Centerの始め方
Visual Studio App Centerの始め方Visual Studio App Centerの始め方
Visual Studio App Centerの始め方Shinya Nakajima
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようStudy Group by SciencePark Corp.
 
複数言語に触れてIoTの表現の幅を広げよう
複数言語に触れてIoTの表現の幅を広げよう複数言語に触れてIoTの表現の幅を広げよう
複数言語に触れてIoTの表現の幅を広げようCore Concept Technologies
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Yuji Otani
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Kenichi Kambara
 

Similar to Windowsアプリ開発の実務で使うUnitTest (20)

テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしようC++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
C++CLIで、ネイティブCの保守開発に.NETを使って楽をしよう
 
Visual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CDVisual Studio App Centerで始めるCI/CD
Visual Studio App Centerで始めるCI/CD
 
Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2Out systemsaichiusermeeting#5 lt2
Out systemsaichiusermeeting#5 lt2
 
Hour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウムHour of-code-2016冬-シンポジウム
Hour of-code-2016冬-シンポジウム
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
Windowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろうWindowsサービスも.NET Coreで作ろう
Windowsサービスも.NET Coreで作ろう
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
【B 5】x pages extension library じゃぱ〜〜ん!コミュニティ動向2014ば〜〜ん!
 
OpenChain Japan Work Group Meeting #20 - Case Studies
OpenChain Japan Work Group Meeting #20 - Case StudiesOpenChain Japan Work Group Meeting #20 - Case Studies
OpenChain Japan Work Group Meeting #20 - Case Studies
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションVisual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
Visual Studio App Centerの始め方
Visual Studio App Centerの始め方Visual Studio App Centerの始め方
Visual Studio App Centerの始め方
 
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しようgit初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
git初心者からgit-flowを使えるレベルになって、リリースとレビューを効率化しよう
 
複数言語に触れてIoTの表現の幅を広げよう
複数言語に触れてIoTの表現の幅を広げよう複数言語に触れてIoTの表現の幅を広げよう
複数言語に触れてIoTの表現の幅を広げよう
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
 
Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)Androidリリース作業の効率化(2)
Androidリリース作業の効率化(2)
 

Windowsアプリ開発の実務で使うUnitTest