我是一个AP cs的学生,我们正在做一个实验来帮助我们练习使用数组。然而,我有一个问题与我的方法之一的特定测试。该方法应该采取一个数组中的名称列表,并把他们变成他们的初始形式。例如:肯特,克拉克会变成KC。我有这部分下来,但其中一个测试似乎不工作。这是我的代码:
public String[] initialsArray() {
String[] initials = new String[numberActive];
for (int i = 0; i < initials.length; i++) {
initials[i] = "" + names[i].charAt(names[i].indexOf(",") + 2) +
names[i].charAt(0);
}
return initials;
}
numberActive表示数组中已填充空格的个数。
本方法的检测为:
@Test
public void testInitialsArray()
{
WaitingList w1 = new WaitingList();
assertEquals(null,w1.initialsArray());
w1.addName("Bushell, Greg");
w1.addName("Kent, Clark");
w1.addName("Crunch, Captain");
w1.addName("Fields, Justin");
w1.addName("Kent, Clark");
w1.addName("Wayne, Bruce");
w1.addName("Jordan, Michael");
String[] actualInitials = w1.initialsArray();
String[] expectedArrays = {"GB","CK","CC","JF","CK","BW","MJ"};
for(int i = 0; i < actualInitials.length; i++)
{
assertEquals(expectedArrays[i],actualInitials[i]);
}
}
我的问题是测试的第2行,除了这个,其他一切都正常,老实说,我不确定这是什么,甚至要测试。
谢谢你的帮助。
我还没有尝试过任何东西,好像我甚至不知道第2行测试的是什么。
3条答案
按热度按时间7rtdyuoh1#
因为你在initialsArray方法中初始化了你的数组,所以你的数组不会是空的。2如果你正在测试一个空数组,你应该检查一下数组的长度是否等于0。
iyzzxitl2#
initialsArray()
方法定义并返回一个数组。所以这个方法永远不会返回null,这意味着Assert总是失败。
另外,假设这是一个JUnit测试,您应该使用
assertNull(w1.initialsArray());
az31mfrm3#
你的
initialsArray
方法返回一个数组的 reference,你可以把一个reference看作是一个地址,用来找到某个东西,这个地址是对象所在内存的第一个八位字节。你的代码示例化一个数组,捕获一个对该数组的引用,并将该引用返回给调用方法。数组不是返回的,而是返回一个对该数组的引用。
在你的代码中,这个引用永远不会为空,你的代码总是示例化一个新的数组,数组的内容(数组中的元素)是否为空是另一个问题。