VisibleForTesting概要
- guavaで定義されているアノテーション
- テストのためやむを得ずpublicやprotected、package privateにする場合に付与
- このアノテーションを付ける、付けないで特に動作は変わらない(中身は空のinterface)
- 実際にソース確かめたい方はこちら。
ソースコードのサンプル
@VisibleForTesting
protected void doSomething() {
// ...
}
こんなアノテーションがあるなんて今まで知らなかった。へぇ〜、確かにぱっと見で「なんでprotectedなの?」っていうのが分かりやすくなった気がする。guavaを使っているプロジェクトなら、せっかくなので使ってみるのがいいかもしれない。
ちなみに、protectedよりpackage privateの方が公開範囲が狭いので、package privateにしておく方が無難かもしれない。(確かJunit実践入門にも書いていたような気がする…)
けっこう使われているの?
GitHubで検索してみると、それなりに使われているアノテーションっぽい。KotlinでもVisibleForTestingを付けているプロジェクトもあった。
他にも似たようなアノテーションってあるの?
com.google.common.annotations
業務で使えそうなのはVisibleForTestingだけかな。
これを書いた背景
2,3年ぶりにJavaを書いていて、学びがあったのでメモしておきました。
もしかしたら日々でAndroidアプリを書いている人だったら常識レベルなのかな?