gpt4 book ai didi

java - Android 项目中的 Junit 与响应式编程

转载 作者:行者123 更新时间:2023-12-01 17:56:51 25 4
gpt4 key购买 nike

我正在尝试在 Android 项目中使用 JUnit4,同时我还使用 RxAndroid/RxJava。

我所做的是从 UUID generator 调用 REST API使用改造

UUIDApi.java只是一个用于改造调用的接口(interface)(现在只是一个)

public interface UUIDApi {

static final String BASE_URL = "https://www.uuidgenerator.net";

@GET("/api/version4")
Observable<String> getUUID();
}

UUIDModel.java其中retrofit初始化并实现上面编写的接口(interface)

public class UUIDModel implements UUIDApi{
private Retrofit retrofit;
private UUIDApi uuidApi;
UUIDObserver uuidObserver = new UUIDObserver();

public UUIDModel() {
retrofit = new Retrofit.Builder()
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(new ToStringConverterFactory())
.baseUrl(UUIDApi.BASE_URL)
.build();
uuidApi = retrofit.create(UUIDApi.class);
}

@Override
public Observable<String> getUUID() {
return uuidApi.getUUID();
}

public void generateUUID(){
Observable<String> observable = this.getUUID();
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(uuidObserver);
}
}

我有 UUIDObserver,它只是一个实现 Observer 的类。

注意:new ToStringConverterFactory是我找到的一个类here

使用模拟器执行此代码,我确信它工作正常。 问题是我不明白如何联合此代码,因为使用 rxAndroid/rxJava 它会在另一个线程中执行。

我读到:

The official way to test an observable is by using a TestSubscriber, an helper subscriber provided directly by the RxJava library.

所以我尝试了

@Test
public void test_uuid() throws Exception {
UUIDApi uuidApi = new UUIDModel();
Observable<String> observable = uuidApi.getUUID();

TestSubscriber<String> testSubscriber = new TestSubscriber<>();
observable.subscribe(testSubscriber);

}

但在 observable.subscribe(testSubscriber); 我收到错误“无法解析方法'subscribe(io.reactivex.subscribers.TestSubscriber)”

我做错了什么?我应该如何应对 rxProgramming 和 JUnit?

最佳答案

TestSubscriberFlowable 相关,而 TestObserverObservable 一起使用。但对于这两者,您实际上不必手动订阅任何内容。您只需使用 test() 方法即可。

observable.test()
.assertNoErrors()
.assertValue(expected)
.assertComplete();

关于java - Android 项目中的 Junit 与响应式编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com