【发布时间】:2020-07-18 08:24:29
【问题描述】:
我对java非常生疏,并试图在youtube教程中重新学习它,代码如下:这是Person.java
package com.gurmeet.javacourse.lesson2;
import com.gurmeet.javacourse.lesson3.Name;
public class Person {
private Name personName;
private static int personCounter;
public Person()
{
personCounter++;
/*
* empty on purpose - default constructor
*/
}
public Person(Name personName) {
this.personName = personName;
}
public String helloWorld() {
// TODO Auto-generated method stub
return "Hello World";
}
public String hello(String name) {
// TODO Auto-generated method stub
return "Hello " + name;
}
public static int numberOfPersons() {
// TODO Auto-generated method stub
return personCounter;
}
}
这是 PersonTest.java
package com.gurmeet.javacourse.lesson2;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class PersonTest {
@Test
public void shouldReturnHelloWorld() {
Person marcus = new Person();
assertEquals("Hello World", marcus.helloWorld());
}
@Test
public void shouldReturnHelloMarcus() {
Person person = new Person();
assertEquals("Hello Marcus", person.hello("Marcus"));
}
@Test
public void shouldReturnNumberOfPersons() {
Person person1 = new Person();
Person person2 = new Person();
Person person3 = new Person();
Person person4 = new Person();
assertEquals(4, Person.numberOfPersons() - 1);
}
}
以上这两个在同一个包中,但我在同一个项目中创建了另一个包,如下所示:
package com.gurmeet.javacourse.lesson3;
public class Name {
}
我正在使用 JUnit 测试我的代码,但在我的代码的最后一次测试中,我一直收到错误消息,您看到人数应该是 4,但结果一直显示 5。youtube 的家伙得到了正确的答案,即使我正确地遵循了他的编码,我也没有。我在本教程中了解到静态是全局的,在类级别,因为我在同一个包中创建了两个类,所以 personCounter 默认不是 1 而是 2,因此它一直显示 5 而不是4.我通过在方法中减去1来解决它,但我认为这不是正确的方法。我的推理正确吗?还是有其他解释。最重要的是,我该如何解决这个问题?如果我犯了任何错误,请放过我。
【问题讨论】:
-
作为旁注,当您调用非默认构造函数时,您不会增加计数器
标签: java eclipse maven static junit5