Suche senden
Hochladen
xUnitハンズオン第1回テキスト
•
Als PPTX, PDF herunterladen
•
1 gefällt mir
•
571 views
mizuky fujitani
Folgen
職場で開催したハンズオンの資料。
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 38
Jetzt herunterladen
Empfohlen
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
You&I
xUnitハンズオン第4回テキスト
xUnitハンズオン第4回テキスト
mizuky fujitani
xUnitハンズオン第2回テキスト
xUnitハンズオン第2回テキスト
mizuky fujitani
xUnitハンズオン第3回テキスト
xUnitハンズオン第3回テキスト
mizuky fujitani
TypeScriptハンズオン第2回テキスト
TypeScriptハンズオン第2回テキスト
mizuky fujitani
TypeScriptハンズオン第1回テキスト
TypeScriptハンズオン第1回テキスト
mizuky fujitani
Empfohlen
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
You&I
xUnitハンズオン第4回テキスト
xUnitハンズオン第4回テキスト
mizuky fujitani
xUnitハンズオン第2回テキスト
xUnitハンズオン第2回テキスト
mizuky fujitani
xUnitハンズオン第3回テキスト
xUnitハンズオン第3回テキスト
mizuky fujitani
TypeScriptハンズオン第2回テキスト
TypeScriptハンズオン第2回テキスト
mizuky fujitani
TypeScriptハンズオン第1回テキスト
TypeScriptハンズオン第1回テキスト
mizuky fujitani
SIMD.js(ECMAScript 7)
SIMD.js(ECMAScript 7)
Hiroshi Kawada
JSer Class #3
JSer Class #3
mizuky fujitani
JSer Class #2
JSer Class #2
mizuky fujitani
One night Vue.js
One night Vue.js
Masahiro Kyuden
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
mizuky fujitani
JSer Class #1
JSer Class #1
mizuky fujitani
Keypoints html5
Keypoints html5
dynamis
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Vue.js入門
Vue.js入門
Takuya Sato
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
power-assert, mechanism and philosophy
power-assert, mechanism and philosophy
Takuto Wada
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
Flux react現状確認会
Flux react現状確認会
VOYAGE GROUP
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
Hello Java
Hello Java
Chihiro Ito
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Vue.js with Go
Vue.js with Go
Kazuhiro Kubota
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
Takuto Wada
REST API のコツ
REST API のコツ
pospome
論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
Noritada Shimizu
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
Study Group by SciencePark Corp.
Weitere ähnliche Inhalte
Andere mochten auch
SIMD.js(ECMAScript 7)
SIMD.js(ECMAScript 7)
Hiroshi Kawada
JSer Class #3
JSer Class #3
mizuky fujitani
JSer Class #2
JSer Class #2
mizuky fujitani
One night Vue.js
One night Vue.js
Masahiro Kyuden
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
mizuky fujitani
JSer Class #1
JSer Class #1
mizuky fujitani
Keypoints html5
Keypoints html5
dynamis
たのしい高階関数
たのしい高階関数
Shinichi Kozake
Vue.js入門
Vue.js入門
Takuya Sato
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
Takuto Wada
power-assert, mechanism and philosophy
power-assert, mechanism and philosophy
Takuto Wada
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
Flux react現状確認会
Flux react現状確認会
VOYAGE GROUP
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Yusuke Naka
Hello Java
Hello Java
Chihiro Ito
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
健太 田上
Vue.js with Go
Vue.js with Go
Kazuhiro Kubota
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
Takuto Wada
REST API のコツ
REST API のコツ
pospome
Andere mochten auch
(20)
SIMD.js(ECMAScript 7)
SIMD.js(ECMAScript 7)
JSer Class #3
JSer Class #3
JSer Class #2
JSer Class #2
One night Vue.js
One night Vue.js
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
JSer Class #1
JSer Class #1
Keypoints html5
Keypoints html5
たのしい高階関数
たのしい高階関数
Vue.js入門
Vue.js入門
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
power-assert, mechanism and philosophy
power-assert, mechanism and philosophy
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Flux react現状確認会
Flux react現状確認会
TypeScriptをオススメする理由
TypeScriptをオススメする理由
Hello Java
Hello Java
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
Vue.js with Go
Vue.js with Go
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
REST API のコツ
REST API のコツ
Ähnlich wie xUnitハンズオン第1回テキスト
論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
Noritada Shimizu
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
Study Group by SciencePark Corp.
HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装
Akihiro Ueyama
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08
孝文 田村
Net fringejp2016
Net fringejp2016
Yusuke Fujiwara
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
Kazuki Tsutsumi
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Kazumi IWANAGA
concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!
Katz Ueno
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
Kenichi Yoshida
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
Yuta Kashino
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
拓将 平林
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
Koichi Ota
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
株式会社 オープンソース・ワークショップ
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
株式会社 オープンソース・ワークショップ
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
Yuki Katada
Ähnlich wie xUnitハンズオン第1回テキスト
(20)
論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08
Net fringejp2016
Net fringejp2016
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
xUnitハンズオン第1回テキスト
1.
xUnitハンズオン xUnitフレームワークを通じた プログラミング&テスト・スキルUP
2.
はじめに
3.
開催概要 • 開催日時 • 2016/12/27
火曜17時 • 2016/1/5〜1/x 木曜17時 • 会場 • CS+Lync • 持ち物 • Visual Studio 2013もしくは2015 なんならXamarin Studio 6.xでも… (社内で入手経路あるのかわかりませんが)
4.
テキストとサンプルコード • 社内の共有フォルダ • 後ほどメールで連絡させてもらいます。 •
SlideShare&GitHub • オンラインからも取得できるようにしておきます。 • SlideShare :http://www.slideshare.net/mizukyfujitani • GitHub :https://github.com/mizukyf
5.
目的 • プログラミング・スキルUP • C#/.NETの言語仕様を実践的に理解する •
LambdaやLINQといった「積極活用が望まれながら嫌煙されがち」な 事項のノウハウを得る • OOPにおけるモジュール化の「あるべき」を理解する • テスト・スキルUP • 「テストしにくいコード」をテストする工夫をできるようになる • 「テストしやすいコード」(≒品質高いコード)を意識したコーディ ングやレビューができるようになる
6.
そもそも前提として・・・ そこから一歩進んで • そもそも前提として • 「画面を突っつく」≠UT
という事実を理解する • 自分のプロジェクトでUTを実施する基礎知識を得る • そこから一歩進んで • ゆくゆくは"Hot Spot"(改修のたびに障害を起こす類のモジュール) の単体テスト製造および継続メンテナンスの体制を構築していきたい 「志が低い」と言われそうですが、A___システムやB___システム ではこれが限界なのではないかと考えています。。。
7.
ようするに • ハンズオンの目的は「UTを極める」ことにはない。 • UTを手段として自分たちのスキルUPするきっかけ提供。 •
自分のためのPlaygroundを手に入れたつもりで遊んでほしい。 • xUnitについてもっと知りたいという人は・・・ ? ? Javaneseな方は JSerな方は C#な方は TypeScriptな方は
8.
各回のコンテンツ(予定) 日付 会場 コンテンツ 2016/12/27
コラボレーション スペースN/E ハンズオンの開催概要、目的、 環境構築とはじめてのUTプロジェクト 2017/1/5 セミナールームX テストの書き方、アサーションの種類、セットアップ、 「別の方法で」実装してみよう 2017/1/12 コラボレーション スペースN/E 開発手法TDDの紹介、UTのイメージ転換、 「テストしやすい」インターフェースを作ろう 2017/1/19 セミナールームY IO、日時、乱数、privateフィールド、 あらゆる「副作用」を局所化しよう 2017/1/26 コラボレーション スペースW/S 予備回
9.
はじめてのUTプロジェクト
10.
xUnitのいろいろ • Javaの場合 • JUnit
:有名すぎて他のFWの話がさっぱり出てこない。 • C#の場合 • NUnit :資料もそこそこ、Xamarinサポートあり。採用。 • xUnit.net :NUnitからFork?資料少ないのでボツ。A社が採用。 • MSTest :MS社謹製。macOSユーザなのでボツ。 • JavaScript/TypeSrtiptの場合 • Jasmine :有名すぎて(以下略) Testing Framework xUnitMockito, Mocha, Karma, etc.
11.
Visual Studio x
NUnitの場合
12.
ソリューションとプロジェクトの作成 • [ファイル]→[新規作成]→[プロジェクト]クリック • 「新しいプロジェクト」画面で[インストール済み]→[テン プレート]→[Visual
C#]を選択 • 適当なアプリの種類を選択(例:クラスライブラリ)
13.
テストプロジェクトの作成 • ソリューション エクスプローラーで作成したソリューション を右クリック→[追加]→[新しいプロジェクト]をクリック •
「新しいプロジェクト」画面で[インストール済み]→[テン プレート]→[Visual C#]を選択 • 「クラス ライブラリ」を選択
14.
NuGetパッケージの追加① • 2つめのプロジェクトを右クリックして[NuGetパッケージの 管理]をクリック • 「NuGetパッケージの管理」画面で[オンライン]→[すべ て]を選択 •
[オンラインの検索]欄に「Nunit」と入力し検索 • 「Nunit」を選択し[インストール]をクリック VS2013.5
15.
NuGetパッケージの追加② • [検索]欄に「NUnit Adapter」と入力し検索 •
「Nunit 3 Test Adapter for Visual Studio」を選択し[インス トール]をクリック • インストールが終わったら[閉じる] VS2013.5
16.
NuGetパッケージの追加① • 2つめのプロジェクトを右クリックして[NuGetパッケージの 管理]をクリック • 「NuGetパッケージマネージャー」(もしくは「NuGetパッ ケージの管理」)画面で[参照]をクリック •
[検索]欄に「Nunit」と入力し検索 • 「Nunit」を選択し[インストール]をクリック • 「プレビュー」画面で[OK]をクリック VS2015
17.
NuGetパッケージの追加② • [検索]欄に「NUnit Adapter」と入力し検索 •
「NUnit3TestAdapter」を選択し[インストール]をクリック • 「プレビュー」画面で[OK]をクリック VS2015
18.
プロジェクト参照の追加 • 2つめのプロジェクトの[参照]を右クリック→[参照の追 加]をクリック • 「参照マネージャー」画面で[プロジェクト]→[ソリュー ション]を選択 •
テスト対象プロジェクトを選択しチェックON • 画面右下の[OK]をクリック
19.
テストケースを作成
20.
テストの実行と結果確認 • [テスト]→[実行]→[すべてのテスト]をクリック • テストエクスプローラーの結果表示を確認 ※テストエクスプローラーは[テスト]→[ウィンドウ]→ [テストエクスプローラー]をクリックをすることで表示され る。
21.
Xamarin x NUnitの場合 おまけ
22.
ソリューションとプロジェクトの作成 • [ファイル]→[新しいソリューション]クリック • 「新しいプロジェクト」画面でアプリの種類を選択し[次へ] •
[プロジェクト名]と[ソリューション名][場所]を入力 • [作成]をクリック おまけ
23.
2つめのプロジェクトの作成 • ソリューションの作成がされる • 「ソリューション」パッドでソリューション名を右クリック→ [追加]→[新しいプロジェクトを追加]クリック おまけ
24.
NUnitライブラリ プロジェクト のテンプレートを選択 • [その他]→[.NET]→[NUnitライブラリ
プロジェクト]を 選択して[次へ]をクリック • [プロジェクト名]を入力して[作成]クリック おまけ
25.
プロジェクト参照の追加 • 作成したNUnitライブラリ プロジェクトの[参照]を右クリッ ク→[参照の編集]をクリック •
「参照の編集]画面の[プロジェクト]タブで最初に作成した プロジェクトにチェックON • 画面右下の[OK]をクリック おまけ
26.
テストケースを作成する • 「Test.cs」というスケルトンが用意されている • これをもとにテストケースを作成する おまけ
27.
テストを実行する • [表示]→[パッド]→[テスト]をクリック • 「テスト」パッドで[すべて実行]をクリック おまけ
28.
Gulp x TypeScript x
Jasmineの場合 おまけ
29.
NOTE • 作業環境に以下のツールがインストール済みであること: • node.jsおよびnpm •
Gulp CLI("npm install -g gulp-cli") • TypeScriptコードの編集は好みのテキストエディタで: • Atom • Visual Studio Code • WebStorm • Visual Studio • Etc... おまけ
30.
雛形プロジェクトをダウンロード • ブラウザでGitHub上のリポジトリ・ページにアクセス • [Clone
or download]→[Downlod ZIP]をクリック • ZIPファイルを展開する おまけ
31.
プロジェクトのセットアップを行う • "cd /path/to/project"コマンドでディレクトリ移動 •
"npm install"コマンドで依存性のダウンロードを実行 おまけ
32.
テストケースを作成し実行する • "src/main/"配下の"*.ts"ファイルにクラスを定義 • "src/test/"配下の"*.spec.ts"ファイルにテストコードを記述 •
"gulp test"コマンドでJasmineによりテストが実行される おまけ
33.
実際に書いてみる
34.
テスト対象コード たしかにあれば便利だけど…、正直そん な使わなくない?系の拡張メソッド RubyやPythonにありがちなアレ。
35.
テストコード①
36.
テストコード② ? ? どんなテストコード になるでしょう??
37.
テストコード② Assertクラスが提供してくれている各種 のアサーションについては次回説明予定 テスト対象のコードと同じコードを書い てもあまり意味がない。「別の方法で」 実装することできなか、実践的な試行錯 誤をするいい機会と考えてみましょう
38.
きょうはここまで • 次回は・・・ • テストクラスの書き方をもう少し詳しく見ていく。 •
アサーションの種類を調べてみる。 • 「テストのまえにすべきこと」のセットアップをする。
Jetzt herunterladen