日々常々

ふつうのプログラマがあたりまえにしたいこと。

寝坊対策にTimeoutを設定する

『JUnit実践入門』写経・実践会 in 大阪 - connpass を開催しました!

寝坊しました

こんなテストになってたんですよ。

	@Test
	public void 起きられる() throws Exception {
		sut.wakeUp();

		assertThat(sut.isAwake(), is(true));
	}

「どんなに時間がかかっても起きればOK!」となっていたので、寝坊しようがしまいがGREENになってしまってたんです。

タイムアウトを設定する

	@Test(timeout=1000)
	public void 起きられる() throws Exception {
		sut.wakeUp();

		assertThat(sut.isAwake(), is(true));
	}

これで「時間以内に起きられなければ失敗する」テストになりました。寝坊したらちゃんとREDになるので安心ですね!


詳しくはJUnit実践入門のP.52, 151 をご参照下さい。

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

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

蛇足

起こされる対象がwakeUpを持つのはどうなんだとか、時間かかるのはどこなんだとか、getStatusにStatus返させてコールバックするのがいいんじゃないかとか、なんとか。
あとgetUpメソッドにしようとしたらUpが取得できそうでこまるとか、そんな話してました。真面目にクラス設計考えると終わらないのでこれで。