私は .NET の世界 (C#) から Java (Android 開発) に移行しています。
.NET スペースの多くのモッキング フレームワークとツールでは、テスト済みのメソッドにモック オブジェクトを挿入することなく、クラス/メソッドの使用を置換/オーバーライドできます ( Microsoft Fakesはその 1 つです)。
たとえば、次のメソッドを使用します。
public void SomeMethod()
{
new SomeOtherClass().Do("This is a test!");
}
SomeOtherClass().Doメソッドを呼び出すと、このクラスのモック オブジェクトをこのメソッドに注入していなくても、特定の値を返したり、特定の方法で動作したりすることができます。
たとえば、 Microsoft Fakesを使用すると、これは次のようなコードで実行できます。
using (ShimsContext.Create())
{
// decide what to do when Do() gets called
System.Fakes.ShimSomeOtherClass.Do = str => ....
new SomeOtherClass().Do("blabla");
}
Java/Android のモッキングの世界で私が見た限りでは、そのようなことは不可能です。すべてのメソッドに依存関係を挿入するには、すべてのコードをリファクタリングする必要があります。
これはいくつかの場所では実際に良い方法かもしれませんが、すべてのコードの場所で行うことは不可能です。
Javaでこれを達成する方法はありますか?
私が使用しているフレームワーク: Mockito、PowerMock、Robolectric