この数値より小さいことをテストする
パフォーマンス調査用のテストケースで if (timeDiff > 200) fail(); のように書かれていたのを assertTrue(timeDiff <= 200); と書き直してみたんだけれど、失敗した時に失敗したことしかわからず、どのくらい時間がかかったのかがわからない。
どうせならテストの結果で expected:<...> but was:<...> と表示されるようにしたいなあ…ってんでつくってみました。
class LessThanEqualTo { private final long value; LessThanEqualTo(long value) { this.value = value; } @Override public String toString() { return "\"" + value + " >= \""; } @Override public boolean equals(Object object) { return value >= ((Number)object).longValue(); } }
これを使ってこんな感じのテストケースを書く。:
void testHoge() { ... assertEquals(new LessThanEqualTo(100), result); }
このテストに失敗すると次のようなトレースが得られる。:
junit.framework.AssertionFailedError: expected:<"100 >="> but was:<132> ...
うん、わかりやすくなった。
(これもきっと車輪の再発明だよね?)