我正在尝试让我的单元测试再次工作两天,每次我尝试运行它们时都会出现此错误:
Process finished with exit code 1
Class not found: "XXXXX.XXXXX.XXXXX.XXX"Empty test suite.
Run Code Online (Sandbox Code Playgroud)
尝试运行测试类或仅运行方法时会发生这种情况.我试图清理所有测试配置并重建项目.此外,我能够找到其他人遇到同样的问题,因此,提出的解决方案无法解决我的问题.
这是我的gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.1'
defaultConfig {
applicationId "XXXXXXXXXX"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0.0"
multiDexEnabled true
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dataBinding {
enabled = true
}
}
buildscript {
repositories {
maven { …Run Code Online (Sandbox Code Playgroud) 我正在尝试测试一个函数,其中流的元素在延迟后一个一个地分派,我能够使用Thread.sleep. 但是,当我使用时,TestScheduler.advanceTimeBy我无法得到任何结果。
查看代码:
public Observable<Object> getDelayedObjects(Observable<Observable<Object>> objectsStreams) {
objectsStreams.concatMap(objectsStream ->
objectsStream.repeat().concatMap(object ->
Observable.just(object)
.delay(getDuration(object), TimeUnit.MILLISECONDS)));
}
Run Code Online (Sandbox Code Playgroud)
和测试代码:
TestScheduler testScheduler = new TestScheduler();
BehaviorSubject<Observable<Object>> objectStreamSubject = BehaviorSubject.create(objectsStream);
model.getDelayedObjects(objectStreamSubject)
.observeOn(testScheduler)
.subscribeOn(testScheduler)
.subscribe(testSubscriber);
testScheduler.triggerActions();
//Thread.sleep(900) works with the default scheduler
testScheduler.advanceTimeBy(900, TimeUnit.MILLISECONDS);
testSubscriber.assertReceivedOnNext(objects);
Run Code Online (Sandbox Code Playgroud)
检查TestScheduler使用情况我发现通常将调度程序传递给delay函数。因此,我能够通过将调度程序作为方法的参数提供getDelayedObjects给delay. 但是,我仍然不明白为什么它之前不起作用。