Java Android studio单元测试:编写针对截击请求的模拟测试时遇到的问题(以非零退出值1结束)
我一直在努力为volley定制请求编写测试用例,我已经为其实现了Java Android studio单元测试:编写针对截击请求的模拟测试时遇到的问题(以非零退出值1结束),java,android,unit-testing,android-volley,Java,Android,Unit Testing,Android Volley,我一直在努力为volley定制请求编写测试用例,我已经为其实现了FakeHttpStack类和FakeRequestQueue 我的项目测试类结构如下: /app /src /test /java/package/myClassTest.java /resources/testfile.txt Gradle文件: 我的课程如下: FakeHttpStack.java myClassTest.java 我是Android studio的新手,编写测试类请指
FakeHttpStack
类和FakeRequestQueue
我的项目测试类结构如下:
/app
/src
/test
/java/package/myClassTest.java
/resources/testfile.txt
Gradle文件
:
我的课程如下:
FakeHttpStack.java
myClassTest.java
我是Android studio的新手,编写测试类请指导我的错误所在。这可能是由于许多原因造成的,例如由于没有足够的RAM来构建项目,所以请释放足够的内存,如果它不能解决您的问题,那么您可以尝试删除未使用的依赖项库并同步您的gradle,您可以参考这可能是由于许多原因造成的,例如由于没有足够的RAM来构建您的项目,因此请释放足够的内存,如果它不能解决您的问题,那么您可以尝试删除未使用的依赖项库并同步您的渐变,您可以参考应用程序级别build.gradle文件中的,添加
defaultConfig{
multiDexEnabled true
}
在应用程序级别build.gradle文件中,添加
defaultConfig{
multiDexEnabled true
}
尝试运行
/gradlew dexDebug--debug
以获取有关失败原因的详细信息预期的顶级错误:java.lang.OutOfMemoryError:java堆空间错误:任务“::dexDebug”的执行失败>com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'C:\Program Files\Java\jdk1.7.0\u 21\bin\Java.exe''以非零退出值3@hoomiI认为@android Weblineindia答案似乎是正确的这类测试是否测试您的代码,或者作为框架截取?尝试运行/gradlew dexDebug--debug
以获取有关失败原因的详细信息预期的顶级错误:java.lang.OutOfMemoryError:java堆空间错误:任务“::dexDebug”的执行失败>com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:process'command'C:\Program Files\Java\jdk1.7.0\u 21\bin\Java.exe''以非零退出值3@hoomiI认为@android Weblineindia的答案似乎是正确的这类测试是测试您的代码,还是作为一个框架测试?
import android.content.Context;
import com.android.volley.AuthFailureError;
import com.android.volley.Cache;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.NoCache;
public class FakeRequestQueue extends RequestQueue {
public FakeRequestQueue (Context context) {
super(new NoCache(), new BasicNetwork(new FakeHttpStack(context)));
start();
}
@Override
public void start () {
System.out.println("request start");
super.start();
}
@Override
public void stop () {
System.out.println("request stop");
super.stop();
}
@Override
public Cache getCache () {
System.out.println("request start");
return super.getCache();
}
@Override
public void cancelAll (RequestFilter filter) {
System.out.println("Request cancel with filter " + filter);
super.cancelAll(filter);
}
@Override
public void cancelAll (Object tag) {
System.out.println("Request cancel with tag " + tag);
super.cancelAll(tag);
}
@Override
public Request add (Request request) {
System.out.println("Note: FakeRequestQueue is used");
System.out.println("New request "+ request.getUrl()+ " is added with priority "+ request.getPriority());
try {
if (request.getBody() == null) {
System.out.println("body is null");
} else {
System.out.println("Body:" + new String(request.getBody()));
}
} catch (AuthFailureError e) {
// cannot do anything
}
return super.add(request);
}
}
public class OppTestCase {
private static FakeRequestQueue fakeRequestQueue;
@Before
public void setup() {
System.out.println("setup ");
if (fakeRequestQueue == null) {
fakeRequestQueue = new FakeRequestQueue(RuntimeEnvironment.application.getApplicationContext());
}
}
@Test
public void testinglist(){
GsonRequest<Result> gsonRequest = new GsonRequest<Result>(
Request.Method.GET,
Constants.STR_URL_LIST,
Result.class,
null,
new Response.Listener<OpportunityListResult>() {
@Override
public void onResponse(OpportunityListResult response) {
System.out.println("response:"+response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
assertEquals(volleyError,notNullValue());
}
})
};
fakeRequestQueue.add(gsonRequest);
}
Error:Gradle: Execution failed for task '::dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_21\bin\java.exe'' finished with non-zero exit value 1.
defaultConfig{
multiDexEnabled true
}