这是数组代码的串联,我尝试为其编写junit测试用例,但给出语法错误。我不确定确切的语法是什么。
public static String[] concatArray(String[] firstArry, String[] secArry) {
if (null != firstArry && null == secArry) {
return firstArry;
} else if (null == firstArry && null != secArry) {
return secArry;
} else if( null != firstArry && null != secArry ){
String[] concatArry = new String[firstArry.length + secArry.length];
System.arraycopy(firstArry, 0, concatArry, 0, firstArry.length);
System.arraycopy(secArry, 0, concatArry, firstArry.length, secArry.length);
return concatArry;
}else{
return null;
}
JUnit测试用例。
@Test
public void testConcatArray() {
String[] arr1 = {"nodename", "nodecategory"};
String[] arr2 = {" test"," case"};
Assert.assertEquals({"abc"}, StringUtils.concatArray(arr1, arr2));
}
答案 0 :(得分:0)
编译器不知道第一个参数的实际类型是什么。
您需要将以下allong与其他断言一起使用:
Assert.assertArrayEquals(new String[]{"abc"}, StringUtils.concatArray(arr1, arr2));
答案 1 :(得分:0)
您可以使用assertArrayEquals()
方法声明数组。
请参阅:Using assertArrayEquals in unit tests
也许您想看一下Java Stream API afaik,它也可以处理null
数组的串联,因此您不必关心null处理。
例如如果您有数组['abc']
和null
,则流concat将返回['abc']
。
(但也许您需要在我不确定100%之前进行过滤:yourStream.filter(array -> array != null)
)
看看这个,以更好地理解我的意思:
https://www.concretepage.com/java/jdk-8/java-8-concat-streams-lists-sets-arrays-example