当根本没有构造函数调用时,构造函数调用必须是构造函数中的第一个语句

时间:2016-08-25 05:50:39

标签: java unit-testing junit

我正在尝试为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时也是同一行,在下拉列表中给出以下消息:系统无法解析为变量。

我做错了什么?谢谢。

1 个答案:

答案 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;。显然 - 当你从空堆栈弹出一些东西时,你会看到一个例外。

这些是您编写单元测试的一些示例。你在测试中做了一个的事情;你检查一件事;使用断言,或期望例外。