私はこのようなクラスを持っています:
public final class Foo
{
public native int getBar();
public String toString()
{
return "Bar: " + getBar();
}
}
getBar()は JNI で実装され、クラスはfinalであることに注意してください。toString()メソッドをテストする JUnit テストを作成したいと考えています。このためには、getBar()メソッドをモックしてから、元のtoString()メソッドを実行して出力を確認する必要があります。
最初はこれは不可能だろうと思っていましたが、機能リストに従って最終クラスとネイティブ メソッドのテストをサポートするPowerMockを見つけました。しかし、これまでのところ、私はそれで成功していません。私が管理した最善のことは、完全なクラスをモックすることでしたが、テストでは、あまり意味のない実際のメソッドではなく、モックされたtoString()メソッドをテストしました。
では、PowerMock を使用して上記のtoString()メソッドをテストするにはどうすればよいでしょうか? 私は Mockito でPowerMockを使用することを好みますが、これが不可能な場合は、代わりにEasyMockを使用しても問題ありません。