class ReservationServiceSpec extendsAnyFreeSpec
with Matchers
with GivenWhenThen
with ReservationMatchers {
"ReservationService" - {
"reserveメソッド" - {
"予約の追加" - {
"現在時刻より後ろの有効な予約時間を予約" in {
Given("テスト用に作成したReservationServiceを使用")
val service = ReservationService.createForTest()
When("運用時間内の時間")
val dt = "2024-01-15T10:00:00+JST"
Then("テスト対象時刻で実行コンテキストを用意")
given ExecutionContext = ExecutionContext.createWithCurrentDateTime(dt)
And("現在時刻より後ろの有効な予約時間で予約")
ReservationServiceSpec.sbt (1/2) 再掲 第31回 設計/実装(2)
34.
val rid =ResourceId("id1234")
val uid = UserId("user789")
val start = LocalDateTime.of(2024, 1, 15, 11, 00)
val end = LocalDateTime.of(2024, 1, 15, 12, 00)
val interval = Interval.openUpper(start, end)
val cmd = ReserveCommand(rid, uid, interval)
service.reserve(cmd) should successReserve(cmd)
}
}
}
}
}
ReservationServiceSpec.sbt (2/2) 再掲 第31回 設計/実装(2)
まとめ
• ケーススタディ
• ブック・カフェPierisBooksの販売システム
• プラクティス/アクティビティ
• Use case lite : Test a Use-case slice
• User Environment Lite : Evolve Documents
• CI/CD Pipeline : Ensure CI/CD Pipeline to Test
• Testable
• 仕様とテストの融合
• FP (Functional Programming)
48.
参考文献
• The UnifiedModeling Language Reference Manual, 2nd
(Rumbaugh他, 2004)
• The Unified Modeling Language User Guide, 2nd (Booch他,
2004)
• The Unified Software Development Process (Jacobson他,
1999)
• The Object Constraint Language, 2nd (Warmer他, 2003)
• UML 2 and the Unified Process: Practical Object-Oriented
Analysis and Design (Arlow他, 2005)
• OMG Unified Modeling Language Version 2.5 (OMG, 2015)
• 上流工程UMLモデリング (浅海, 2008)
• The Essentials of Modern Software Engineering: Free the
Practices from the Method Prisons! (Jacobson他, 2019)
• ソフトウェア・テストの技法 第2版 (マイヤーズ他,
2006)
• 【この1冊でよくわかる】ソフトウェアテストの教科書
[増補改訂 第2版](布施 他, 2021)
• 知識ゼロから学ぶソフトウェアテスト 第3版 アジャイ
ル・AI時代の必携教科書 (高橋, 2023)
• ソフトウェア品質を高める開発者テスト 改訂版 アジャ
イル時代の実践的・効率的でスムーズなテストのやり方
(高橋, 2022)
• Extreme Programming Explained: Embrace Change 2nd
(Beck, 2004)
• Specification by Example: How Successful Teams Deliver the
Right Software (Adzic, 2011)
• BDD in Action: Behavior-Driven Development for the whole
software lifecycle (Smart, 2014)