如何确保我的 arrayList 中嵌套的 private class 的对象是我想要的?
How to assure the object of a nested private class in my arrayList is the one I want?
这是我的 class,我如何确保方法 insert() 正常工作?
public class HeapQueue<P extends Comparable<? super P>, V>
implements PriorityQueue<P, V> {
private final ArrayList<Pair<P, V>> pairs = new ArrayList<>();
private static class Pair<P extends Comparable<? super P>, V>
implements Comparable<Pair<P, V>> {
private final P priority;
private final V value;
public Pair(P priority, V value) {
this.priority = priority;
this.value = value;
}
@Override
public int compareTo(Pair<P, V> o) {
return priority.compareTo(o.priority);
}
}
我试过这个测试,但我不能保证对象 Pair<> 是正确的。
@Test
public void insertPrioritatAltaTest() {
HeapQueue hq = new HeapQueue();
Priority p1 = null;
try {
p1 = new Priority("Alta");
} catch (InvalidInputError iie) {
}
int a = 1;
hq.insert(p1, a);
assertEquals(hq.size(),1);
}
我尝试创建 getter 来提取 Pairs 的值,但 Netbeans 警告我说我正在通过 public API 传递私人事物,而且我没有获得它。
我不认为声明 public class Pair<> 是测试它的正确方法。都没有使用我还没有测试过的方法 extract()。
测试您的 class 通常最简单的方法是使用用户的使用方式,而不必过多担心内部状态。
我认为你在
的道路上是正确的
I tried creating getters to extract the value of Pairs
尽管听起来您遇到了一个错误,因为您正在 returning 私有 class Pair<P,V>
的一个实例。从你的问题中我不确定界面期望你的 class 表现如何,但你似乎希望 public V pop()
或类似的功能能够删除和 return PriorityQueue
中的下一项。请注意,在此示例中,您会 return 一个 V
类型, 而不是 一个 Pair
.
如果这是您正在寻找的行为,您的测试将类似于:
@Test
public void insertPrioritatAltaTest() {
HeapQueue hq = new HeapQueue();
hq.insert(new Priority("A"), 1);
hq.insert(new Priority("C"), 2);
hq.insert(new Priority("B"), 3);
assertEquals(hq.pop(), 1);
assertEquals(hq.pop(), 3);
assertEquals(hq.pop(), 2);
}
这是我的 class,我如何确保方法 insert() 正常工作?
public class HeapQueue<P extends Comparable<? super P>, V>
implements PriorityQueue<P, V> {
private final ArrayList<Pair<P, V>> pairs = new ArrayList<>();
private static class Pair<P extends Comparable<? super P>, V>
implements Comparable<Pair<P, V>> {
private final P priority;
private final V value;
public Pair(P priority, V value) {
this.priority = priority;
this.value = value;
}
@Override
public int compareTo(Pair<P, V> o) {
return priority.compareTo(o.priority);
}
}
我试过这个测试,但我不能保证对象 Pair<> 是正确的。
@Test
public void insertPrioritatAltaTest() {
HeapQueue hq = new HeapQueue();
Priority p1 = null;
try {
p1 = new Priority("Alta");
} catch (InvalidInputError iie) {
}
int a = 1;
hq.insert(p1, a);
assertEquals(hq.size(),1);
}
我尝试创建 getter 来提取 Pairs 的值,但 Netbeans 警告我说我正在通过 public API 传递私人事物,而且我没有获得它。 我不认为声明 public class Pair<> 是测试它的正确方法。都没有使用我还没有测试过的方法 extract()。
测试您的 class 通常最简单的方法是使用用户的使用方式,而不必过多担心内部状态。
我认为你在
的道路上是正确的I tried creating getters to extract the value of Pairs
尽管听起来您遇到了一个错误,因为您正在 returning 私有 class Pair<P,V>
的一个实例。从你的问题中我不确定界面期望你的 class 表现如何,但你似乎希望 public V pop()
或类似的功能能够删除和 return PriorityQueue
中的下一项。请注意,在此示例中,您会 return 一个 V
类型, 而不是 一个 Pair
.
如果这是您正在寻找的行为,您的测试将类似于:
@Test
public void insertPrioritatAltaTest() {
HeapQueue hq = new HeapQueue();
hq.insert(new Priority("A"), 1);
hq.insert(new Priority("C"), 2);
hq.insert(new Priority("B"), 3);
assertEquals(hq.pop(), 1);
assertEquals(hq.pop(), 3);
assertEquals(hq.pop(), 2);
}