正如我的类名所示:我想测试一下,如果我的类是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