【发布时间】:2020-06-10 01:49:14
【问题描述】:
我在 freecodecamp 上关注Java tutorial,并编写了以下代码。 在这里,我创建了两个类: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
【问题讨论】:
-
this 有帮助吗?
-
@Mandy8055 是的,感谢您的帮助。你能告诉我为什么我得到 numberOfPersons = 1 吗?我没有发现我的代码有什么问题。
-
单元测试方法的运行顺序与它们在源代码中的顺序不同。可以强制它们按顺序运行,但最好以不依赖已运行的其他测试的方式编写测试方法
-
@Joni 我不知道这个!我正在努力找出我的代码有什么问题。谢谢!
-
请将输出作为文本粘贴到您的问题中。
标签: java class oop junit annotations