2016-08-17 6 views
0

私は唯一の方法を実行して、testInsert()テストが問題なく完了しますが、私はクラス全体を実行すると、私はエラーが持っている:ユニットテスト:NoSuchMethodErrorはモック改造で要求取得

java.lang.NoSuchMethodError: com.dataart.kvarivoda.myapplication.api.PlacesApi.getNearbyPlaces(Ljava/lang/String;Ljava/lang/String;I)Lretrofit2/Call; 

at GetPlacesTest.testLogin(GetPlacesTest.java:61) 
.... 

レトロフィット@GETをインターフェイスは、次のとおりです。

public interface PlacesApi { 
@GET("/maps/api/place/nearbysearch/json") 
PlacesResults getNearbyPlaces(@Query("key") String key, @Query("location") String location, @Query("radius") int radius); 
} 

私のテストクラスがある:

私もコンパイルしません「を取得するために開始されていない可能性がしようと、いくつかの後
public class GetPlacesTest extends ProviderTestCase2 { 

PlacesApi mockApi; 
EventBus mockEventBus; 
PlacesApi api; 

Cursor cursor; 
String webApiKey; 

public GetPlacesTest() { 
    super(PlacesContentProvider.class, "com.example.myName.myapplication.database.PROVE"); 
} 

public void setUp() throws Exception { 
    super.setUp(); 
    setContext(InstrumentationRegistry.getTargetContext()); 
    //MockitoAnnotations.initMocks(this); 
    mockApi = Mockito.mock(PlacesApi.class); 
    mockEventBus = Mockito.mock(EventBus.class); 
    webApiKey = getContext().getResources().getString(R.string.webApiKey); 
    api = ((PlacesApp) getApplication()).getApi(); 
} 

@Override 
protected void tearDown() throws Exception { 
    super.tearDown(); 
    if (cursor != null) { 
     cursor.close(); 
    } 
} 

@Test 
public void testInsert() throws Exception { 
    PlacesResults results1 = loadResults("getplaces.json"); 

    Mockito.when(mockApi.getNearbyPlaces(eq("testkey"), Matchers.anyString(), Matchers.anyInt())).thenReturn(results1); 

    GetPlacesAction action = new GetPlacesAction(getContext().getContentResolver(), mockEventBus, mockApi, "testkey"); 
    action.downloadPlaces(); 

    //check 
    cursor = getContext().getContentResolver().query(PlacesContentProvider.getUri(DB.PlaceTable.DB_TABLE), null, null, null, null); 
    assertEquals(2, cursor.getCount()); 

    cursor.moveToPosition(0); 
    assertEquals("461d123aeb1c1648abdd5e535989d2bc518cf28e", getColumn(DB.PlaceTable.COLUMN_ID)); 
    assertEquals("Astral Tower & Residences", getColumn(DB.PlaceTable.COLUMN_TITLE)); 
    assertEquals(getImageUrl("CoQBcwAAAMUTbLLt7doNLiVSnpGryeIJLVdrDnMPcqs3uV84zfvDklrBr1uYxitVMEZWzTD40xkM923ak8HfRtoGiNdi32mqzP6sKB3lOYNbbOQeaHZ3bStClwhWO3507ryh4bODvEfXc-l42r7rFXFAg9GLSd7N2tqoOgLwzTLray0d1sixEhAZaZ2_ajvBieZvUuPA72d7GhQTtFtpqT8j7UBYSHvq9AuRsoRSig"), getColumn(DB.PlaceTable.COLUMN_IMAGE)); 
    assertEquals(locationToString(-33.868111), getColumn(DB.PlaceTable.COLUMN_LOCATION_LAT)); 
    assertEquals(locationToString(151.195219), getColumn(DB.PlaceTable.COLUMN_LOCATION_LNG)); 
} 



private PlacesResults loadResults(String file) throws IOException { 
    InputStream is = InstrumentationRegistry.getContext().getAssets().open(file); 
    return new GsonBuilder().create().fromJson(new InputStreamReader(is), PlacesResults.class); 
} 

private String getImageUrl(String photoReference) { 
    return new GoogleImagesUtil("testkey").getImageUrl(photoReference); 
} 

private String locationToString(double location) { 
    return String.valueOf(LocationsUtil.locationToInteger(location)); 
} 

private String getColumn(String column) { 
    return cursor.getString(cursor.getColumnIndex(column)); 
} 

private int getColumnInt(String column) { 
    return cursor.getInt(cursor.getColumnIndex(column)); 
} 
} 

答えて

1

テストが見つかりました "エラー。後で私はクラスにいくつかの実行コンフィギュレーションがあることを発見しましたが、私は何も追加しませんでした。私はこの回答に続いて実行コンフィギュレーションを削除しました: https://stackoverflow.com/a/38190125/2574228

すべてのエラーがその後になりました。

関連する問題