Android和Java的REST客户端改造不会终止
我正在研究Android和Java的Retrofit REST客户端。
在Eclipse中使用标准Java项目我使用@POST和void返回类型。
进行异步调用。
一切都按预期工作,但我的测试主要方法永远不会终止。 我必须手动停止每个测试执行。
我需要做什么(或停止做)以便我的测试自动终止?
这是我的java代码。
import retrofit.Callback; import retrofit.RestAdapter; import retrofit.RetrofitError; import retrofit.client.Response; public class Android { private static final RestAdapter mRestAdapter = new RestAdapter.Builder() .setEndpoint("http://localhost:8080/resources/registrations") .build(); public static void main(final String... args) { final AndroidRegister androidRegister = mRestAdapter.create(AndroidRegister.class); Callback callback = manufactureCallback(); androidRegister.androidRegisterInterface( new RegistrationIdJson("1111-2222-3333-4444"), callback); } private static Callback manufactureCallback() { return new Callback() { @Override public void failure(final RetrofitError retrofitError) { System.out.println("retrofitError-->" + retrofitError.getLocalizedMessage() + "" + returning + "" + response.getStatus() + "<---"); } }; } }
默认情况下,Retrofit使用具有60秒核心池超时的非守护程序线程池。 很少,你很想以这种方式使用Retrofit的异步Callback
行为。
如果您只是测试,可以在RestAdapter.Builder
上调用setExecutors
并将同步执行程序作为第一个参数传递,并将第二个参数传递为null
。 这将允许您使用异步API,但在测试中获得同步行为。
和同步执行程序,如果你不知道如何制作一个:
public final class SynchronousExecutor implements Executor { @Override public void execute(Runnable r) { r.run(); } }