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”)
一旦您开始使用,我会再发布更多信息。