Java编程的新手,我只是想了解如何使此类经过测试。我做了一个Queue类:

public class Queue<E> {

private ArrayList<E> items;

public Queue(){
    items = new ArrayList<E>();
}

public void join(E e) {
    items.add(e);
}

public E leave() throws EmptyQueueError {
    if (items.isEmpty()) {
        throw new EmptyQueueError();
    }
    return items.remove(0);

}

}


我想制作一个名为QueueTest的JUnit,该JUnit在开始每个测试之前会自动重置为空吗?然后,我希望它检查是否从空队列中删除项目会引发EmptyQueueError吗?最后,我希望它检查当几个项目加入(最初)为空的队列时,是第一个加入的项目是第一个离开的项目吗?

这是我正在遵循的教程,但无法使我理解。我已经完成了上面的类,并尝试了JTest类:

package queue;

public class QueueTest<e> {

private Queue q;

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void test() {
    q = new Queue<e>();
    assertEquals("Empty Queue", 0, q);

}

}


我接近我想要达到的目标吗?我正在尝试做第一个。

感谢您的帮助和充足的时间。

最佳答案

你过得很好

@Test
public void test() {
    q = new Queue<e>();
    assertEquals("Empty Queue", 0, q);

}


问题在于您创建了一个新的Queue实例,但是您对此不做任何事情。

然后您的测试内幕可能是

@Test
public void test() {
    Queue<Integer> q = new Queue<Integer>();      // A
    try {
        Integer ignore = q.leave();     // B
        fail("exception expected");               // C
    } catch (EmptyQueueError ex) {
        // implicit success                       // D
    }
}


这意味着您要创建一个队列('A'),然后立即尝试获取一个项目('B')。这将导致异常。如果不是,则您的测试将失败,并显示“预期的异常”('C')。如果引发了预期的异常,则您的代码有效(“ D”)

一旦您开始使用,我会再发布更多信息。

09-10 12:41
查看更多