【发布时间】:2017-05-26 12:08:19
【问题描述】:
如何解决在抽象类的具体方法中反映的 cobertura 分支覆盖问题。
在下面的 sn-p 中,抽象类 Currency 的 equals 方法包含一个检查变量 SID 和 Ab 的部分,该变量位于条件之后 如果(getClass()!= obj.getClass())。 这部分永远不会被覆盖
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
if (getClass() != obj.getClass())
return false;
final Currency other = (Currency) obj;
if (this.getAb() == null) {
if (other.Ab() != null)
return false;
} else if (!this.getAb().equals(other.getAb()))
return false;
if (this.getSID() < 1 || (this.getSID() != other.getSID()))
return false;
return true;
}
我尝试使用以下方法在测试类中覆盖这些变量,但仍然没有被覆盖:
测试类:
Currency currency = new Currency() {
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
};
Currency currency1 = new Currency() {
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
};
currency.setAb("SE3421");
currency1.setAb("SE3421");
assertFalse(currency.equals(currency1));
assertTrue((currency1.getAb()).equals(currency.getAb()));
感谢任何帮助。
【问题讨论】:
标签: java unit-testing sonarqube cobertura