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(); } }