小编Mat*_*lli的帖子

无法在Android Studio中运行单元测试

我正在尝试让我的单元测试再次工作两天,每次我尝试运行它们时都会出现此错误:

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)

junit android powermock gradle android-studio

6
推荐指数
1
解决办法
6050
查看次数

TestScheduler 不适用于 RxJava

我正在尝试测试一个函数,其中流的元素在延迟后一个一个地分派,我能够使用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函数。因此,我能够通过将调度程序作为方法的参数提供getDelayedObjectsdelay. 但是,我仍然不明白为什么它之前不起作用。

java rx-java

5
推荐指数
1
解决办法
1084
查看次数

标签 统计

android ×1

android-studio ×1

gradle ×1

java ×1

junit ×1

powermock ×1

rx-java ×1