2017-02-02 30 views
1

私のPermissionHostCompatクラスのアクションrequestPermission(@NonNull String permission, int requestCode)を模擬したいと思います。不明な理由でInvalidUseOfMatchersExceptionが発生しました

public class PermissionHostCompat { 

    (...) 

    public void requestPermission(@NonNull String permission, int requestCode) { 
     requestPermissions(new String[]{permission}, requestCode); 
    } 

    public void requestPermissions(@NonNull String[] permissions, int requestCode) { 
     if (activity != null) { 
      ActivityCompat.requestPermissions(activity, permissions, requestCode); 
     } else if (fragment != null) { 
      FragmentCompat.requestPermissions(fragment, permissions, requestCode); 
     } else { 
      fragmentv4.requestPermissions(permissions, requestCode); 
     } 
    } 

    (...) 
} 

あり、私はそれを行う方法です。

@Mock 
PermissionHostCompat permissionHostCompat; 

//... 

Answer<Void> requestPermissionAction = new Answer<Void>() { 
     public Void answer(InvocationOnMock invocation) { 
      // some code 
      return null; 
     } 
    }; 
doAnswer(requestPermissionAction).when(permissionHostCompat) 
    .requestPermission(anyString(), anyInt()); 

そして、それは誤り私をスローします。私は、なぜ分からない

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
0 matchers expected, 2 recorded:

This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));

。私もany(String.class)any(int.class)とすべてのオプションの組み合わせを試しました。

マイ輸入:

import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import staticorg.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;

Mockitoのバージョン:1.10.19

私が間違っているのか?それはMockito 2で動作しますが、輸入を変更する必要がある場合

+0

あなたは[MCVE](https://stackoverflow.com/help/mcve)と、この例外を再現することはできますか? –

+0

MCVEで動作します。エラーは別の場所にある必要があります。 – F1sher

+0

投稿できますか?だから、他の人がエラーを再現することができます。 –

答えて

0

は試してみてください。

import static org.mockito.ArgumentMatchers.anyInt; 
import static org.mockito.Matchers.anyString; 
関連する問題