Effective JavaでEnumについて勉強してて、Enumが想定している通りになっているか確認するのにテストを書いていて少しはまったのでメモ
書いていたEnum
public enum Operator {
// 他にPLUSとかある。
DIVIDE("/") {
double apply(double x, double y) { return x / y; }
};
private final String symbol;
Operator(String symbol) { this.symbol = symbol;}
@Override public String toString() { return symbol;}
abstract double apply(double x, double y);
}
このクラスに対してテストクラス作成
public class OperatorTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void zeroDivide() {
thrown.expect(ArithmeticException.class);
}
}
テスト失敗。
何気なく、0で除算したら例外発生するよなと思ってテスト書いてみたけど、
double型を0で割っても例外発生しないのですね。
こうすれば通る。
@Test
public void zeroDivide() {
assertThat(Operator.DIVIDE.apply(11, 0), is(Double.POSITIVE_INFINITY));
}