具有静态字段的java测试对象

具有静态字段的java测试对象,java,unit-testing,static,Java,Unit Testing,Static,我有一个静态场的对象: class Project() { private static id; private int projectid; public Project(fileds) { this.id = id++; } //methods } 现在我想用多个测试来测试这个类。问题是,当一个测试完成时,我的对象不会从内存中删除: @Test public test1(){ Project project1 = new Project(); Pr

我有一个静态场的对象:

class Project() {
  private static id;
  private int projectid;

  public Project(fileds) {
    this.id = id++;
  }
  //methods
  }
现在我想用多个测试来测试这个类。问题是,当一个测试完成时,我的对象不会从内存中删除:

@Test
public test1(){
  Project project1 = new Project();
  Project project2 = new Project();
}
@Test
public test2(){
  here the objects from previous tests are still exist since the   static    field is two times increased
}

每次测试后我有没有办法冲洗它们?因为我能克服它的唯一方法是使用忽略…

静态对象是在应用程序启动时创建的,并且它只有一个实例。它被称为
类变量
。参考这个

所以当你在做
id++它实际上正在更新单个类级别id对象。而且
这个.id
真的没有意义


@达菲莫正确地指出了这一点。你需要在你的构造函数中使用这个

class Project { // removed "()" 
  private static int id; // added int
  private int projectid;

  public Project() { // removed fileds
    this.projectid = Project.id++; // updated
  }
  //methods
}

静态对象是在应用程序启动时创建的,并且只有一个实例。它被称为
类变量
。参考这个

所以当你在做
id++它实际上正在更新单个类级别id对象。而且
这个.id
真的没有意义


@达菲莫正确地指出了这一点。你需要在你的构造函数中使用这个

class Project { // removed "()" 
  private static int id; // added int
  private int projectid;

  public Project() { // removed fileds
    this.projectid = Project.id++; // updated
  }
  //methods
}

静态对象是在应用程序启动时创建的,并且只有一个实例。它被称为
类变量
。参考这个

所以当你在做
id++它实际上正在更新单个类级别id对象。而且
这个.id
真的没有意义


@达菲莫正确地指出了这一点。你需要在你的构造函数中使用这个

class Project { // removed "()" 
  private static int id; // added int
  private int projectid;

  public Project() { // removed fileds
    this.projectid = Project.id++; // updated
  }
  //methods
}

静态对象是在应用程序启动时创建的,并且只有一个实例。它被称为
类变量
。参考这个

所以当你在做
id++它实际上正在更新单个类级别id对象。而且
这个.id
真的没有意义


@达菲莫正确地指出了这一点。你需要在你的构造函数中使用这个

class Project { // removed "()" 
  private static int id; // added int
  private int projectid;

  public Project() { // removed fileds
    this.projectid = Project.id++; // updated
  }
  //methods
}

我认为这篇文章写得不好

如果我正确解释了这一点,那么您需要一个唯一的
projectid
,该ID与从静态计数计算的每个实例关联。按如下方式更改代码:

class Project() {
  private static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
这样,
projectid
将从零开始,并在每次创建新实例时递增一

您不应该担心刷新或项目id计数。这对你的方法测试来说不是材料

如果必须重置为零,请公开静态变量:

class Project() {
  public static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
以下是您在测试中如何重置它(如果必须):


我认为这篇文章写得不好

如果我正确解释了这一点,那么您需要一个唯一的
projectid
,该ID与从静态计数计算的每个实例关联。按如下方式更改代码:

class Project() {
  private static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
这样,
projectid
将从零开始,并在每次创建新实例时递增一

您不应该担心刷新或项目id计数。这对你的方法测试来说不是材料

如果必须重置为零,请公开静态变量:

class Project() {
  public static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
以下是您在测试中如何重置它(如果必须):


我认为这篇文章写得不好

如果我正确解释了这一点,那么您需要一个唯一的
projectid
,该ID与从静态计数计算的每个实例关联。按如下方式更改代码:

class Project() {
  private static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
这样,
projectid
将从零开始,并在每次创建新实例时递增一

您不应该担心刷新或项目id计数。这对你的方法测试来说不是材料

如果必须重置为零,请公开静态变量:

class Project() {
  public static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
以下是您在测试中如何重置它(如果必须):


我认为这篇文章写得不好

如果我正确解释了这一点,那么您需要一个唯一的
projectid
,该ID与从静态计数计算的每个实例关联。按如下方式更改代码:

class Project() {
  private static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
这样,
projectid
将从零开始,并在每次创建新实例时递增一

您不应该担心刷新或项目id计数。这对你的方法测试来说不是材料

如果必须重置为零,请公开静态变量:

class Project() {
  public static int id;
  private int projectid;

  public Project(fileds) {
    // This notation makes clear that the static variable associated w/ class
    this.projectid = Project.id++;
  }
  //methods
}
以下是您在测试中如何重置它(如果必须):


首先,这是不赞成这种静态变量的主要原因

如果你真的必须这样做,你有两个选择:

  • 使用类加载器卸载,然后在测试之间重新加载类
  • 使用内省重置测试之间的值,可以将静态初始化为常量,然后可以使用相同的常量重置它

  • 首先,这是不赞成这种静态变量的主要原因

    如果你真的必须这样做,你有两个选择:

  • 使用类加载器卸载,然后在测试之间重新加载类
  • 使用内省重置测试之间的值,可以将静态初始化为常量,然后可以使用相同的常量重置它

  • 首先,这是不赞成这种静态变量的主要原因

    如果你真的必须这样做,你有两个选择:

  • 使用类加载器卸载,然后在测试之间重新加载类
  • 使用内省重置测试之间的值,可以将静态初始化为常量,然后可以使用相同的常量重置它

  • 首先,这是不赞成这种静态变量的主要原因

    如果你真的必须这样做,你有两个选择:

  • 使用类加载器卸载,然后在测试之间重新加载类
  • 使用内省重置测试之间的值,可以将静态初始化为常量,然后可以使用相同的常量重置它

  • 每次测试后有没有办法刷新它们?
    您是如何知道它仍在内存中的?
    this.id=id++可能不在