如何确保我的arrayList中嵌套的私有类的对象是我想要的对象?
这是我的课,我如何确保insert()方法正常工作?如何确保我的arrayList中嵌套的私有类的对象是我想要的对象?
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);
}
}
我试过这个测试,但是我不能保证对象<>是正确的。
@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方法来提取对的价值,但Netbeans的warnered我,我路过一个私人的事情,通过一个公共的API,而且我并没有获得它。 我不认为宣布公开课Pair <>是正确的方法来测试此。既不使用我还没有测试过的方法extract()。
回答:
通过使用它来测试你的课程通常是最容易的,用户将如何使用它,而不用担心太多的内部状态。
,我认为你是在正确的轨道上
我试图创建干将虽然这听起来像你,因为你正在返回一个实例收到错误提取双
的价值您的私人课程Pair<P,V>
。我不确定你的问题究竟是如何界面期望你的班级行为,但你似乎想要一个public V pop()
或类似的功能,能够删除并返回您的PriorityQueue
下一个项目。请注意,在此示例中,您将返回V
类型,而不是 a 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);
}
以上是 如何确保我的arrayList中嵌套的私有类的对象是我想要的对象? 的全部内容, 来源链接: utcz.com/qa/257443.html