小编Kon*_*Man的帖子

单元测试 - 已订阅验证Observable

我有这样的java代码

 mDataManager.getObservable("hello").subscribe( subscriber );
Run Code Online (Sandbox Code Playgroud)

我想要verify以下Observable.subscribe()

我试图模仿getObservable()verify

 Observable<Response> res = mock(Observable.class);
 when(mDataManager.getObservable("hello")).thenReturn(res);
 verify(res).subscribe();
Run Code Online (Sandbox Code Playgroud)

但是有一个错误

Caused by: java.lang.IllegalStateException: onSubscribe function can not be null.
at rx.Observable.subscribe(Observable.java:8167)
at rx.Observable.subscribe(Observable.java:8158)
at rx.Observable.subscribe(Observable.java:7962)
....
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: omni.neo.hk.omniapiservice.v4.model.external.UserLoginBean.class
at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:109)
at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:187)
at rx.internal.operators.OperatorDoOnEach$1.onNext(OperatorDoOnEach.java:82)
... 48 more
Run Code Online (Sandbox Code Playgroud)

我认为mock这里不可能是一个Observable,但是如果没有一个模拟的Observable我就做不到verify(res).subscribe()

在这种情况下的任何建议?

java unit-testing mockito observable rx-java

11
推荐指数
1
解决办法
4183
查看次数

查找1个字符串中的每个字符是否存在于另一个字符串中,比O(n ^ 2)快

给出2个字符串:

String stringA = "WHATSUP";
String stringB = "HATS";
Run Code Online (Sandbox Code Playgroud)

我想知道stringB H A T S中的每个字符是否都存在stringA

在初级方法中,该过程可以在嵌套的for循环内完成,其计算复杂度为O(n ^ 2).

for(int i = 0; i < stringA.length(); i++){
    for(int j = 0; j < stringB.length(); j++){
        if(stringA.charAt(i) == stringB.charAt(j))
            //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个更快的解决方案来解决这个问题.

java complexity-theory compare subset computation

8
推荐指数
1
解决办法
112
查看次数

Java泛型 - 擦除概念

我有一些代码如下:

public class java_generic {

    public static void main(String[] args) {

        T t = new X();
        t.<Object>m(new Object());
        t.<String>m(new String());

    }

    static class T {
        <E> void m (E e){
            System.out.println("here is T");
        }
    }

    static class X extends T {
        void m (String o){
            System.out.println("here is X");            
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

从我的理解,在类型擦除后,课程T将成为这样:

    static class T {
        void m (Object e){
            System.out.println("here is T");
        }
    }
Run Code Online (Sandbox Code Playgroud)

并且m超载.

m(Object)m(String),我希望结果会是

here is T
here is X
Run Code Online (Sandbox Code Playgroud)

但结果是 …

java generics types erasure

3
推荐指数
1
解决办法
97
查看次数

Kotlin 注释 - 要求参数是来自特定类的常量变量

filter我这里有一个函数

fun filter(category: String) {
...
}
Run Code Online (Sandbox Code Playgroud)

和一个具有许多常量字符串的类

object Constants {
    val CAT_SPORT = "CAT_SPORT"
    val CAT_CAR = "CAT_CAR"
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何确保参数category是常量字符串Constants(或抛出警告)?

我正在寻找类似的东西@StringRes

我知道Enum可能会成功,但此时不喜欢进行代码重构。

android annotations kotlin

2
推荐指数
1
解决办法
1074
查看次数