所以我对子类equals
和CheckingAccount
都有一个SavingAccount
方法,而且我还有一个名为BankAccount
的超类。我对如何使用assert语句测试equals
方法感到困惑?非常感谢。
以下是equals
方法的代码
在CheckingAcc
public boolean equals(Object object) {
if (this == object)
return true;
if (object == null)
return false;
if (getClass() != object.getClass())
return false;
CheckingAcc other = (CheckingAcc) object;
if (accountNumber != other.accountNumber)
return false;
return true;
}
在SavingAcc中
public boolean equals(Object object) {
if (this == object)
return true;
if (object == null)
return false;
if (getClass() != object.getClass())
return false;
SavingAcc other = (SavingAcc) object;
if (accountNumber != other.accountNumber)
return false;
return true;
}
答案 0 :(得分:0)
通常,您编写单元测试程序,创建一些对象,设置它们,并使用断言来验证您期望为真的条件。当断言失败时,程序会提醒您。
因此,在您的测试程序中,您可以,例如:
CheckingAccount test = new CheckingAccount(1);
CheckingAccount other = new CheckingAccount(2);
SavingAccount anotherTest = new SavingAccount();
SavingAccount anotherOther = new SavingAccount();
anotherTest.accountNumber = 3;
anotherOther.accountNumber = 3;
assert !test.equals(other); // this should evaluate to true, passing the assertion
assert anotherTest.equals(anotherOther); // this should evaluate to true, passing the assertion
看起来您使用帐号作为帐户的相等方式,因此我假设在创建这些对象时,您要么将帐号作为构造函数的参数传递,要么指定明确地
显然这是一个非常微薄的例子,但我不确定你的对象的创建/结构。但是,只要你掌握了要点,这可以扩展到提供更有意义的测试。
编辑所以要完全测试你的equals方法,你可以设置你的断言,这样它们都应该评估为true(并传递)以及测试你的equals方法的所有功能(完成)代码覆盖率)
CheckingAccount newTest = new CheckingAccount(1);
CheckingAccount secondTest = new CheckingAccount(1);
SavingAccount newOther = new SavingAccount(3);
assert newTest.equals(newTest); // test first if
assert !newTest.equals(null); // test second if
assert !newTest.equals(newOther) // test third if
assert newTest.equals(secondTest); // test fourth if