如何确保我的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

回到顶部