如何使用rxjavatestobserver断言两个字符串列表?
在这个测试中,这两个字符串列表是相同的,但是assertValue方法告诉我它们不相等,因为它们有不同的内存地址。我如何使它针对数组中的实际字符串进行测试,以便通过以下测试如何使用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[]>
@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
使用basicObject.equals
进行比较,因此数组的比较将失败,因为它们只是比较地址,而不是值
您需要使用操作符的assertValue(谓词)
版本,然后使用Arrays.equals(Object[],Object[])
进行实际比较:
testObserver.assertValue(arr -> Arrays.equals(arr, strings2))