Java JUNIT测试-为什么构造函数被调用了两次
正如我的类名所示:我想测试一下,我的类是否是迭代器的实例。因此,我想知道,如果它只需要实现接口就可以做到这一点,这似乎已经足够了 但是,当我通过JUNIT测试运行以下类时,我得到了以下控制台输出:Java JUNIT测试-为什么构造函数被调用了两次,java,junit,Java,Junit,正如我的类名所示:我想测试一下,我的类是否是迭代器的实例。因此,我想知道,如果它只需要实现接口就可以做到这一点,这似乎已经足够了 但是,当我通过JUNIT测试运行以下类时,我得到了以下控制台输出: Do something! Do something! I did something! 似乎类构造函数被调用了两次!但是我不知道第二个电话是从哪里打来的。我已经测试了“if”参数的变化,以排除,instanceof有故障,如 // if (a instanceof Object) { // i
Do something!
Do something!
I did something!
似乎类构造函数被调用了两次!但是我不知道第二个电话是从哪里打来的。我已经测试了“if”参数的变化,以排除,instanceof
有故障,如
// if (a instanceof Object) {
// if (a instanceof Iterator) {
// if (2 > 3) {
然而,在所有3个病例中都被称为。因此,我假设单元测试首先尝试,需要为自己创建一个类的对象来执行所有测试,因为它们是类的一部分。这是正确的(?)
test1()
是类InstanceOfIteratorTest
的实例方法,因此是的,JUnit需要先创建实例,然后调用该方法。实例就是这样工作的。在Java中,如果不创建对象并调用构造函数,就不可能调用非静态方法。当然Junit必须调用construstor,所以真正的代码:
在Junit中:
...
InstanceOfIteratorTest l = new InstanceOfIteratorTest(); // print "Do something!"
l.test1();
在l.test1中:
InstanceOfIteratorTest a = new InstanceOfIteratorTest(); // print "Do something!"
if (a instanceof Iterator) {
System.out.println("I did something!"); // print "I did something!"
} else {
System.out.println("I did nothing!");
}
您可以将代码更改为:
@Test
public void test1() {
if (this instanceof Iterator) {
System.out.println("I did something!");
} else {
System.out.println("I did nothing!");
}
}
在这种情况下,“做点什么!”只打印一次。我可以在8分钟内接受答案,并将在8分钟内接受答案(如果这对您合适的话)
@Test
public void test1() {
if (this instanceof Iterator) {
System.out.println("I did something!");
} else {
System.out.println("I did nothing!");
}
}