ひ孫

犬のこととか書いていきたい

junitのsetupでmethodに仕掛けた自作アノテーションを取得する

junit4で環境に依存してしまうテストを書きたい時どうするんだろう
と思ってちょっと調べたらこんな記事に出会った。
なるほど確かにアノテーションなら解決できる。

しかしRunnerを自作するのはちょいと重そうだし、後半の解決策として出ているCategoryもSuiteで管理するようなものっぽい。
もうちょい手軽にSetup時にちょちょいとやれるぐらいでいいよなあと思ってこんなコードができた。


*1
肝になったのはTestNmaeというRule。
通常Annotation取得するには

Thread.currentThread().getStackTrace() 

みたいな感じでやるけども。junitの場合だとリフレクションでテストメソッドが呼び出されているらしく
これでは呼び出されている現在のメソッドが何なのかわからなかった。
で、どうにかならんかと悩んでいたら出てきたのがこいつ。
単純に自身のメソッド名を格納してくれるらしい*2
それができてしまえばあとはこっちのもん。

 Method method = this.getClass().getMethod(this.name.getMethodName(), new Class[0]);

でさっくりMethodを取得!そのまま流れでAnnotation取得!

結構色々使えそう

*1:いくらembed貼ってもgistが表示されなくて困った。出たり出なかったり。これどういう条件なんだろう?

*2:[http://stackoverflow.com/questions/473401/get-name-of-currently-executing-test-in-junit-4:title=Stackoverflowさんに教えてもらった]