gpt4 book ai didi

java - JUNIT 测试 - 为什么构造函数被调用两次

转载 作者:行者123 更新时间:2023-11-30 08:05:23 25 4
gpt4 key购买 nike

正如我的类(class)名称所暗示的那样:我想测试一下,如果我的类(class)是 Iterator 的一个实例。因此我想知道,是否只需要实现接口(interface)就可以了,这似乎就足够了。

但是,当我通过 JUNIT 测试运行以下类时,我得到以下控制台输出:

Do something!

Do something!

I did something!

类构造函数似乎被调用了两次!但是我不知道第二个电话来自哪里。我已经测试了“if”参数的变体以排除 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");
}
}

最佳答案

test1() 是类InstanceOfIteratorTest 的实例方法,所以是的,JUnit 需要先创建实例,然后再调用该方法。这就是实例的工作方式。

关于java - JUNIT 测试 - 为什么构造函数被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com