Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

それでも僕はユニットテストを書きたい - Pester powered by PowerShell

3.958 Aufrufe

Veröffentlicht am

第6回 PowerShell 勉強会 @日本マイクロソフト 関西支店でのLT資料です。

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

それでも僕はユニットテストを書きたい - Pester powered by PowerShell

  1. 1. それでも僕は ユニットテストを書きたい Pester - powered by PowerShell 2016/4/9(Sat) 第 6 回 PowerShell 勉強会 @日本マイクロソフト 関西支店 Twitter: @HIDARI0415
  2. 2. Pester
  3. 3. Pesterとは ❏ PowerShellのためのテスティングフレームワーク ❏ 内部はPowerShellで書かれたDSL ❏ Windows 10から標準搭載 ❏ NuGetから手に入る ❏ PowerShell本家のテストもPesterに移行中 ❏ BDDスタイルでテストを記述
  4. 4. Pesterとは Describe "意識高い系" { It "ビジネスのオポチュニティ" { Set-価値ある仕事 | Should Be "すごい価値が生まれる" } } BDDスタイル Assert.AreEqual(expected, hoge); 参考:TDDスタイル
  5. 5. Pesterとは ❏ Invoke-Pesterコマンドでテストを実行 ❏ *.Tests.ps1というファイルをテストとして実行 ❏ 現在のフォルダで再帰的にファイルを検索 ❏ -TestName オプションでテスト名を指定可能 C:PS> Invoke-Pester C:PS> Invoke-Pester -TestName 意識高い系, スタバMacドヤリング
  6. 6. Features
  7. 7. Pesterの特徴 ❏ 安全なテストのためのTestDrive ❏ パワフルなMock ❏ デフォルトでCodeCoverageを計測可能 ❏ CIのための複数のオプション
  8. 8. Pesterの特徴 ❏ 安全なテストのためのTestDrive ❏ パワフルなMock ❏ デフォルトでCodeCoverageを計測可能 ❏ CIのための複数のオプション
  9. 9. Pesterの特徴 ー 安全なテストのためのTestDrive ❏ TestDrive: or $TestDrive でテスト実行時の一時的な ドライブにアクセス ❏ ファイル操作での副作用のある挙動をテスト
  10. 10. function Add-付加価値($path, $付加価値) { Add-Content $path -Value $付加価値 } Describe "Add-付加価値" { $testPath = "TestDrive:付加価値のあるテキスト.txt" Set-Content $testPath -value "ビジネスを円滑に進めるソリューション" Add-付加価値 $testPath " -高い付加価値" $result = Get-Content $testPath It "adds a 付加価値" { (-join $result) ` | Should Be "ビジネスを円滑に進めるソリューション -高い付加価値" } } Pesterの特徴 ー 安全なテストのためのTestDrive
  11. 11. ❏ TestDriveはDescribe開始時に作成、終了時に破棄される ❏ 各Contextで追加されたファイルは終了時に削除される ❏ Context内でのファイル内容の変更は次のContextに持ち 越されるので注意 Pesterの特徴 ー 安全なテストのためのTestDrive
  12. 12. Pesterの特徴 ❏ 安全なテストのためのTestDrive ❏ パワフルなMock ❏ デフォルトでCodeCoverageを計測可能 ❏ CIのための複数のオプション
  13. 13. ❏ Mockによるシンプルな記述 ❏ Assert-VerifiableMocks、Assert-MockCalledによ るパワフルなチェック Pesterの特徴 ー パワフルなMock
  14. 14. Mock ❏ 指定したコマンドをモック化する ❏ 特定のパラメータで呼び出されたときだけモック化可能 Pesterの特徴 ー パワフルなMock Mock ` -CommandName Get-ChildItem ` -MockWith {return @{FullName = "A_File.TXT"} } ` -ParameterFilter {$Path -and $Path.StartsWith($env:temp)}
  15. 15. Assert-VerifiableMocks ❏ -VerifiableなMockが呼ばれたかをチェック Pesterの特徴 ー パワフルなMock Mock `Set-Content {} ` -Verifiable ` -ParameterFilter {$Value -eq "Expected Value"} Set-Content some_path -Value "Expected Value" Assert-VerifiableMocks
  16. 16. Assert-MockCalled ❏ Mockが指定回数呼ばれているかをチェック Pesterの特徴 ー パワフルなMock Mock Set-Content ` -ParameterFilter {$path.StartsWith("$env:temp")} Assert-MockCalled ` -CommandName Set-Content ` -Times 2 ` -ParameterFilter { $path -eq "$env:temptest.txt" }
  17. 17. Pesterの特徴 ❏ 安全なテストのためのTestDrive ❏ パワフルなMock ❏ デフォルトでCodeCoverageを計測可能 ❏ CIのための複数のオプション
  18. 18. ❏ Invoke-Pesterの-CodeCoverageパラメータを使用 ❏ 分析対象をファイルパスか、ファイルパスを含む hashtableで指定 Pesterの特徴 ー デフォルトでCodeCoverageを計測可能
  19. 19. C:PS> Invoke-Pester .結果にコミットする.Tests.ps1 ` -CodeCoverage @{Path='.結果にコミットする.ps1'; Function='ライ●ップ'} Code coverage report: Covered 66.67 % of 3 analyzed commands in 1 file. Missed commands: File Function Line Command ---- -------- ---- ------- 結果にコミットする.ps1 ライ●ップ 5 return '世界一のボディメイクを達成' Pesterの特徴 ー デフォルトでCodeCoverageを計測可能
  20. 20. ❏ 安全なテストのためのTestDrive ❏ パワフルなMock ❏ デフォルトでCodeCoverageを計測可能 ❏ CIのための複数のオプション Pesterの特徴
  21. 21. ❏ Invoke-PesterにCIのためのパラメータ ❏ -OutputFileパラメータを使ってNUnit形式のXMLを出力で きるので、お好みのCIツールを使って解決 ❏ -EnableExitスイッチを指定するとリターンコードを伴って PowerShellのセッションを終了する Pesterの特徴 ー CIのための複数のオプション
  22. 22. ❏ -PassThru でInvoke-Pesterの実行結果を格納したオブジェ クトを返す ❏ CI環境で直接PowerShellを実行出来るならこのオブジェク トを使って後続処理 ❏ TotalCount/PassedCount/FailedCount ❏ Time ❏ TestResult Pesterの特徴 ー CIのための複数のオプション
  23. 23. Information
  24. 24. Pesterの情報 ❏ Pester Wiki ❏ PowershellでPesterを使ってテストしてみた - なか日記 ❏ PesterのMock機能をもう少し詳しく│株式会社シフト ❏ Get started with Pester (PowerShell unit testing framework) ❏ Testing your PowerShell scripts with Pester: Assertions and more
  25. 25. Enjoy Testing, Enjoy Pester!

×