Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用rxjavatestobserver断言两个字符串列表?_Java_Arrays_Unit Testing_Rx Java2 - Fatal编程技术网

如何使用rxjavatestobserver断言两个字符串列表?

如何使用rxjavatestobserver断言两个字符串列表?,java,arrays,unit-testing,rx-java2,Java,Arrays,Unit Testing,Rx Java2,在这个测试中,这两个字符串列表是相同的,但是assertValue方法告诉我它们不相等,因为它们有不同的内存地址。我如何使它针对数组中的实际字符串进行测试,以便通过以下测试 @Test public void shouldReturnStringList() {; String[] strings = {"Hello", "World"}; String[] strings2 = {"Hello", "World"}; Observable<String[]>

在这个测试中,这两个字符串列表是相同的,但是assertValue方法告诉我它们不相等,因为它们有不同的内存地址。我如何使它针对数组中的实际字符串进行测试,以便通过以下测试

@Test
public void shouldReturnStringList() {;
    String[] strings = {"Hello", "World"};
    String[] strings2 = {"Hello", "World"};
    Observable<String[]> stringsObservable = Observable.just(strings);

    TestObserver<String[]> testObserver = new TestObserver<>();
    stringsObservable.subscribe(testObserver);

    testObserver.assertValue(strings2);
}
@测试
public void应返回stringlist(){;
String[]strings={“你好”,“世界”};
String[]strings2={“你好”,“世界”};
可观测的字符串可观测=可观测的.just(字符串);
TestObserver TestObserver=新的TestObserver();
stringsObservable.subscribe(testObserver);
testObserver.assertValue(strings2);
}
失败的测试消息:

java.lang.AssertionError:应为:[Ljava.lang.String;@5ebec15 (类:String[]),实际值:[Ljava.lang.String;@21bcffb5(类: 字符串[])(闩锁=0,值=1,错误=0,完成=1)


由于
assertValue
使用basic
Object.equals
进行比较,因此数组的比较将失败,因为它们只是比较地址,而不是值

您需要使用操作符的
assertValue(谓词)
版本,然后使用
Arrays.equals(Object[],Object[])
进行实际比较:

testObserver.assertValue(arr -> Arrays.equals(arr, strings2))