Kar*_*lin 3 java junit android unit-testing
我正在尝试学习如何在Android中进行单元测试,而我却遇到了这个特殊问题.我搜索了以前的SO帖子,但没有一个与此错误相关.我得到了这个例外:
java.lang.RuntimeException:android.net.Uri $ Builder中的方法方案没有被模拟.有关详细信息,请参阅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());
}
}
Run Code Online (Sandbox Code Playgroud)
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";
}
}
Run Code Online (Sandbox Code Playgroud)
是的,这种测试很糟糕的Android SDK.该Uri班是不是在dev的罐子实施.
我的建议是为这些情况制作包装类,并在测试中使用这些包装器.其他可能性是使用Robolectric或Android Instrumentation Tests.
| 归档时间: |
|
| 查看次数: |
1626 次 |
| 最近记录: |