AndroidでJavaで記述されたテストクラスのモックkotlinオブジェクトの問題に関する注意事項

問題の説明

コードは次のように表示されます。

public class AbViewModelTest extends BaseTest {
  @Mock
    private LocationProvider locationProvider;//该对象为Kotlin 类的对象
}

locationProviderのメソッドを呼び出すテストコードを実行すると、テストは失敗し、エラーが発生すると、locationProviderのメソッドの戻り値またはプロパティはnullになります。

理由

Kotlinクラスとそのクラスのメソッドはfinalタイプであるため、@ Mockアノテーションを使用してオブジェクトを生成すると、生成メソッドまたはプロパティが失敗します。

解決

  • 1.Kotlinのメソッドにopen修飾子を追加します
  • 2 PowerMockRunnerを使用すると、コードは次のようになります。
@RunWith(PowerMockRunner.class)
@PrepareForTest({LocationProvider.class})
  public class AbViewModelTest extends BaseTest {
    private LocationProvider locationProvider;//该对象为Kotlin 类的对象
}

おすすめ

転載: blog.csdn.net/genmenu/article/details/105488453