私はAndroidで単体テストを行う方法を学ぼうとしていますが、私はこの特定の問題に悩まされています。以前のSOの投稿を検索しましたが、このエラーに関連するものはありません。私はこの例外が発生しています:Android junit:android.net.Uri&Builderのメソッドスキーム
java.lang.RuntimeException:android.net.Uriのメソッドスキーム$ mockedされていません。詳細については、http://g.co/androidstudio/not-mockedを参照してください。
なぜ、Uri.Builderのメソッド "方式"を嘲笑する必要があるのですか?ありがとう!
MovieDBAPITest.java
package com.karljamoralin.popularmovies;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class MovieDBAPITest {
MovieDBAPI movieDBAPI = new MovieDBAPI();
@Test
public void URLValidator() {
assertEquals("https://api.themoviedb.org/3/movie/top_rated?api_key=test&language=en-US",
movieDBAPI.buildUri("top_rated").toString());
}
@Test
public void test() {
assertEquals("a", movieDBAPI.test());
}
}
MovieDBAPI.java
package com.karljamoralin.popularmovies;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
public class MovieDBAPI extends AsyncTask<String, Void, Void> {
final String TAG = getClass().getSimpleName();
@Override
protected Void doInBackground(String... params) {
Uri uri = buildUri(params[0]);
Log.v(TAG, uri.toString());
//Connect to URL
//Get string input
//Parse string input
//Return M
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
Uri buildUri(String mode) {
final String SCHEME = "https";
final String AUTHORITY = "api.themoviedb.org";
final String PATH1 = "3";
final String PATH2 = "movie";
final String API_KEY = "movie";
final String LANGUAGE = "language";
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.scheme(SCHEME);
uriBuilder.authority(AUTHORITY);
uriBuilder.appendPath(PATH1);
uriBuilder.appendPath(PATH2);
uriBuilder.appendPath(mode);
uriBuilder.appendQueryParameter(API_KEY, "test");
uriBuilder.appendQueryParameter(LANGUAGE, "en-US");
return uriBuilder.build();
}
String test() {
return "a";
}
}