具有静态字段的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++代码>可能不在