正如我的類名所示:我想測試一下,如果我的類是Iterator的一個實例。因此,我想知道,如果它只需要實現接口來做,看起來就足夠了。JUNIT測試 - 爲什麼構造函數被調用兩次
然而,當我通過JUnit測試運行下面的類我得到了以下控制檯輸出:
Do something!
Do something!
I did something!
看來類的構造函數被調用兩次!不過,我不知道第二個電話來自哪裏。我已經測試了「如果」的說法的變化,以排除,instanceof
是有過錯的,像
// if (a instanceof Object) {
// if (a instanceof Iterator) {
// if (2 > 3) {
然而,它在所有3例調用。因此,我假設單元測試首先嚐試,需要爲它自己創建一個對象來執行所有測試,因爲它們是類的一部分。這是正確的(?)
import java.util.Iterator;
import org.junit.Test;
public class InstanceOfIteratorTest implements Iterator {
@Test
public void test1() {
InstanceOfIteratorTest a = new InstanceOfIteratorTest();
if (a instanceof Iterator) {
System.out.println("I did something!");
} else {
System.out.println("I did nothing!");
}
}
public InstanceOfIteratorTest() {
System.out.println("Do something!");
}
@Override
public boolean hasNext() {
throw new java.lang.UnsupportedOperationException("blub");
}
@Override
public Integer next() {
throw new java.lang.UnsupportedOperationException("blub");
}
@Override
public void remove() {
throw new java.lang.UnsupportedOperationException("blub");
}
}
啊謝謝你,這證實了我的猜測。 – blauerschluessel
我可以在8分鐘內接受答案,並將在8分鐘內完成答覆(如果這對你很好) – blauerschluessel