問題の説明
コードは次のように表示されます。
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 类的对象
}