mockito 2 と ArgumentMatchers と Scala のバグ(親のstaticメソッドが呼べない)

よくScala界隈だかScala界隈に限らないのかわからないけど"org.mockito" % "mockito-all" % "1.10.19"が使われていることが多々ありますが、mockito-allは今後更新されなくて、mockito-coreのほうが更新されてるらしいので、そちらを使いましょう(そうしないとJava9で動かないなどの問題がある)


http://repo1.maven.org/maven2/org/mockito/mockito-core/


され、それは良いとして、version上げようとしたら(これ書いてる2017年4月時点で最新のmockito-core 2.7.22、Scala 2.12.2)

value anyLong is not a member of object org.mockito.Matchers

みたいに怒られました。え?と思ってコード確認したら以下のようになっています

https://github.com/mockito/mockito/blob/v2.7.22/src/main/java/org/mockito/ArgumentMatchers.java
https://github.com/mockito/mockito/blob/v2.7.22/src/main/java/org/mockito/Matchers.java

public class ArgumentMatchers {
   public static long anyLong() {
     //実装省略
   }

   // その他anyやanyInt, anyStringなど
}
public class Matchers extends ArgumentMatchers{
}


呼べるはずだよな・・・?Scalaに何か制限あったけ?とおもったらありました。(制限というかバグ?)


https://github.com/scala/bug/issues/7386


親のstaticメソッド呼び出せないのか、つらい。
ただ、今回の場合org.mockito.Matchersのclassに

@deprecated Use {@link ArgumentMatchers}. This class is now deprecated in order to avoid a name clash with Hamcrest
org.hamcrest.Matchers class. This class will likely be removed in version 3.0.

というjavadocコメントあるので、いずれにせよArgumentMatchersに移行するしかなさそうです。

置き換える単純作業頑張ろう・・・