gpt4 book ai didi

java - 为什么 java 代码没有显示正确的实例数量?

转载 作者:行者123 更新时间:2023-12-01 16:20:37 29 4
gpt4 key购买 nike

我正在关注 Java tutorial在 freecodecamp 上,我编写了以下代码。在这里,我创建了两个类:PersonTest.java 和 Person.java。我在 PersonTest.java 中编写了 3 个测试。在编写前两个测试时,已创建 Person 类的两个实例。在第三个测试中,计算创建的实例数量;我得到的输出为 1(我希望它是 2)。我不明白为什么会这样显示。如有任何帮助,我们将不胜感激:)

PersonTest.java

package com.atharvajoshi.javacourse.lesson2;
import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class PersonTest {
@Test
public void shouldReturnHelloWorld() {
Person atharva = new Person(); // First instance
assertEquals("Hello World", atharva.helloworld());
}

@Test
public void shouldReturnHelloAtharva() {
Person person = new Person(); // Second instance
assertEquals("Hello Atharva", person.hello("Atharva"));
}


@Test
public void shouldReturnNumberOfPersons() {
System.out.println(Person.numberOfPersons()); // Answer is coming to be 1
assertEquals(2, Person.numberOfPersons()); // Test failed
}
}

Person.java

package com.atharvajoshi.javacourse.lesson2;

public class Person {

private static int personCounter = 0;

public Person() {
personCounter ++;
}

public String helloworld() {
return "Hello World";
}

public String hello(String anyName) {
return "Hello " + anyName;
}

public static int numberOfPersons() {
return personCounter;
}
}

输出:1

Output

最佳答案

如果您未在 JUnit 中指定顺序,则测试的执行顺序是任意的。为了可视化这一点,请在代码中添加“内部方法 XX”的系统输出。如果您使用 IDE,添加调试器并调试 PersonTest java 类,您就会知道执行顺序是任意的。如果你使用junit 4.x及以上版本,那么尝试这个注释

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

这将按照方法名称的字母顺序执行测试用例

关于java - 为什么 java 代码没有显示正确的实例数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62294595/

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