当前位置: 首页 > 知识库问答 >
问题:

Java中的静态变量错误

牧飞鹏
2023-03-14

我写了一个简单的类和3个测试如下:

package MyPackage;

public class Person {
    
    private static int PERSON_COUNTER = 0;
    
    public Person() {
        PERSON_COUNTER++;
    }
    
    public String hello(){
        return "Hello World";
    }
    
    public String helloName(String name) {
        return "Hello "+name;
    }
    
    public static int numberOfPersons() {
        return PERSON_COUNTER;
    }
    
}

个人测试。爪哇:

package Test;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

import MyPackage.Person;

public class PersonTest {
    
    @Test
    public void testHello() {
        Person p = new Person();
        assertEquals("Hello World",p.hello());
    }
    
    @Test
    public void testHelloName() {
        Person p1 = new Person();
        assertEquals("Hello Mile",p1.helloName("Mile"));
    }
    
    @Test
    public void numberOfPersons() {
        Person p2 = new Person();
        Person p3 = new Person();
        Person p4 = new Person();
        assertEquals(3, Person.numberOfPersons());
    }
}

测试numberOfPersons失败,消息为:java。lang.AssertionError:预期:

共有1个答案

柴增
2023-03-14

您应该使用带有注释@beforeach的方法,通过重置变量来清理您的环境,我认为这就是您缺少的。

 类似资料:
  • 问题内容: 根据Java,静态变量可以通过类名访问,但是即使Java不建议使用静态变量,类对象也可以访问它们,并且给出相同的答案。 我知道该变量只有一个副本,并且所有对象和其他事物的值都相同。Java为什么建议使用类名而不是类对象? 问题答案: 因为可能会造成混淆!静态成员上没有动态调度。 看一下这个令人困惑的代码:(可能是语法错误;我的Java生锈了) 看起来很混乱,因为方法似乎是多态的,所以输

  • 我还是Java新手,我试图创建一个内部类并在main中调用该方法。有一个编译错误说 非静态变量 - 这不能从静态上下文中引用 请帮忙

  • 我有以下代码: 当我尝试编译它时,会出现以下错误: 因此,我尝试使dbConnect静态如下:

  • 问题内容: 将变量声明为的区别是什么 要么 如果我只希望变量是局部的,并且是常量(以后不能更改)? 谢谢 问题答案: 仅仅具有预期的效果。 声明static使其成为一个类变量,使其可以使用类名进行访问

  • 问题内容: 通常,最终静态成员,尤其是变量(或静态最终变量,当然可以以任何顺序使用,而不会重叠含义)已广泛用于Java接口中,以定义实现类的 协议行为 ,这意味着实现该类的类(继承)接口必须包含该接口的所有成员。 我无法区分 final 和 final静态 成员。final静态成员是一个声明为final或其他东西的静态成员?在哪些特定情况下应专门使用它们? 永远不能在方法内部,静态方法内部或实例方

  • 问题内容: 我已经定义了一个对象并声明了一个静态变量。在该方法中,当我尝试打印实例和类变量时,两者都打印相同的值。 不是实例变量吗?它应该打印0而不是50吗? 问题答案: 不,只有一个变量-您尚未声明任何实例变量。 不幸的是,Java允许您访问静态成员,就像通过相关类型的引用访问静态成员一样。这是IMO的设计缺陷,某些IDE(例如Eclipse)允许您将其标记为警告或错误- 但这是语言的一部分。您