『JUnit実践入門』写経・実践会 in 横浜 #1 に参加しました

『JUnit実践入門』写経・実践会 in 横浜 #1 - connpass
2012/12/01 『JUnit実践入門』写経・実践会 in 横浜 #1 #junitbook - Togetterまとめ

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

Yokohama.groovy 仲間の @shinyaa31 さんに誘われて参加しました。
慌てて購入したため、未読での参加に…
ごめんなさい。

場所は以前にも @shinyaa31 さんとモクモクした、横浜は関内にあるルノアールさん。
入ってすぐの場所に 8 名で陣取ってました。

やったこと

これらの章を各自で読んだ後、写経等しながら気になる箇所、疑問等を話すという形式です。
Yokohama.groovy と似たゆるーい感じ。

読んでてリファクタリングのタイミングについて疑問を感じたのですが、みんなに意見を聞く事ができてよかったです。

JUnit実践入門ですが Groovy + Spock + IntelliJ IDEA で本の内容を読み替えながら写経してました。
写経の成果はこちら。

package Calculator
 
class Calculator {
    Integer add(int x, int y) {
        x + y
    }
 
    Integer multiply(int x, int y) {
        x * y
    }
 
    BigDecimal divide(int x, int y) {
        if (y==0) throw new IllegalArgumentException()
        x / y
    }
}
package Calculator
 
import spock.lang.Specification
import spock.lang.Unroll
 
class CalculatorSpec extends Specification {
    def Calculator sut
    def setup() {
        sut = new Calculator()
 
    }
    @Unroll
    def "add は#xと#yで#resultを返す"() {
        expect:
        sut.add(x, y) == result
 
        where:
        x   |y  |result
        5   |1  |6
        3   |4  |7
    }
    @Unroll
    def "multiply は#xと#yで#resultを返す"() {
        expect:
        sut.multiply(x, y) == result
 
        where:
        x   |y  |result
        5   |7  |35
        3   |4  |12
    }
    @Unroll
    def "divide は#xと#yで#resultを返す"() {
        expect:
        sut.divide(x, y) == result
 
        where:
        x   |y  |result
        3   |2  |1.5
        9   |3  |3.0
    }
    def "divide は0除算で例外を送出する"() {
        when:
        sut.divide(9, 0)
 
        then:
        thrown(IllegalArgumentException)
    }
}

その他

Togetter を見ると分かりますが、うさみみさんが偶然にも (?) ハッカソン参加のために、徒歩 5 分の距離にいることが発覚し急遽参加。
色々お話してもらえてよかったです。
そのうち Yokohama.groovy にも来てもらえるみたいですよ。

あ、Groovyイン・アクション の MOP のところ見せてもらえばよかった…

そんな感じで、19 時頃までやって解散となりました。
次回は多分 1 月です。
冬休みの宿題がんばります。