我正在尝试为http://www.keithschwarz.com/interesting/code/?dir=fibonacci-heap
中提供的代码编写单元测试虽然我被困在第一行。我的测试看起来像这样:
public class fibonacciHeapTest {
fibonacciHeap<Integer> fibHeap= new fibonacciHeap<>();
@Test(expected = HeapEmptyException.class)
public void testGetMin() throws HeapEmptyException {
System.assert(true, fibHeap.isEmpty()); // Here I get the error mentioned in the title.
}
在查看System时也是同一行,在下拉列表中给出以下消息:系统无法解析为变量。
我做错了什么?谢谢。
答案 0 :(得分:1)
让我们提供一些更精确的反馈,让您前进:
public class FibonacciHeapTest {//如上所述,UpperCase!
您的第一次测试可能是:
@Test
public void testIsEmptyOnNewHeap() {
assertThat(new FibonnacciHeap<String>().isEmpty(), is(true));
}
关键是:isEmpty()显然应该不抛出异常,所以你不希望&#34;期待&#34;声明。请注意:我转向断言并且hamcrest 匹配器 - 不要浪费时间了解其他断言。断言这是你唯一需要的断言。 (但要了解它需要一些阅读)
然后:
@Test(expected=HeapEmptyException.class)
public void testGetOnEmptyHeap() {
new FibonacciHeap<String>().pop();
}
这里的要点:你的堆有一个获取值的方法,我称之为&#34; pop()&#34;。显然 - 当你从空堆栈弹出一些东西时,你会看到一个例外。
这些是您编写单元测试的一些示例。你在测试中做了一个的事情;你检查一件事;使用断言,或期望例外。