我正在尝试在抽象类中的构造函数上使用断言,String变量thename不能为null或为空,而int变量thesize不能为负或为零,这是我尝试的方法,但我提供的测试用例不通过。我如何断言构造函数的条件?
public abstract class AbstractItem implements Item{
private int size;
private String name;
public AbstractItem(String thename, int thesize){
assert thename != null;
assert thename.length() > 0;
assert thesize > 0;
name = thename;
size = thesize;
}
public final int getSize(){
return size;
}
public String toString(){
return name;
}
}
答案 0 :(得分:1)
Enabling and Disabling Assertions
默认情况下,在运行时禁用断言。两个命令行开关允许您有选择地启用或禁用断言。
要启用各种粒度的断言,请使用
-enableassertions
或-ea
切换。要以各种粒度禁用断言,请使用-disableassertions
或-da
切换。您可以使用提供给交换机的参数指定粒度:
答案 1 :(得分:0)
如果你使用Spring,你也可以使用它们的Assert,它也带有方便的错误信息,所以你可以有一个人为可读的错误,为什么一个断言失败。这是Spring的ACL库的一个片段,如果sid为null,你会收到一条很好的错误信息。
public Long createOrRetrieveSidPrimaryKey(Sid sid, boolean allowCreate) {
Assert.notNull(sid, "Sid required");
// more code here ....
}