開発現場でTDD/BDDを導入するためのポイントを大きく三つに分けて解説。テストレベルや網羅性、サイクルタイムについても紹介します。
class WhenCoveringDivision extends Specification { def "should cover division without error"() { expect: dividend / divisor == quotient where: dividend | divisor || quotient 6 | 1 || 6 6 | 2 || 3 6 | 6 || 1 10 | -1 || -10 -10 | 2 || -5 -10 | -10 || 1 0 | 1 || 0 0 | -1 || 0 } def "should cover division error"() { when: dividend / divisor then: thrown(ArithmeticException) where: dividend | divisor 1 | 0 0 | 0 -1 | 0 } }
上記例は一関数であり、副作用がなく標準APIなので、詳細なテストケースは省略してあります。筆者が仮に割り算関数を自作するなら、「極大値」「極小値」「null」など言語やツールに応じてさまざまなパターンを追加もしくは減らします。
Copyright © ITmedia, Inc. All Rights Reserved.