[英]How Do I Create A Junit Test for an Abstract Class?
如何创建一个JUnit测试来测试另一个类的抽象代码? 我有一个名为AbstractCurve的Abstract类和一个扩展了抽象曲线的“生产者和消费者曲线”。 ConsumerCurve和ProducerCurve是相同的,但类名称不同。 这是代码:
public abstract class AbstractCurve {
ArrayList < Point > myCurve = new ArrayList < Point > ();
public AbstractCurve(int np, double m, double b, int dx) {
for (int i = 0; i < np; i++) {
int x = i * dx;
double y = m * x + b;
if (y < 0) throw new IllegalArgumentException();
ArrayList < Point > myCurve = new ArrayList < Point > ();
myCurve.add(new Point(x, y));
}
}
public boolean add(Point p) {
myCurve.add(p);
sort();
return false;
}
public void delete(Point p) {
myCurve.remove(p);
}
public abstract void sort();
public String toString() {
String t = " ";
for (int i = 0; i < myCurve.size(); i++) {
t = t + myCurve.get(i).toString() + " ";
}
return t;
}
public int contains(Point p) {
for (int index = 0; index < myCurve.size(); index++) {
myCurve.equals(index);
}
return -1;
}
}
消费者:
public class ConsumerCurve extends AbstractCurve{
public ConsumerCurve() {
super(0, 0, 0, 0);
}
public void sort() {}
}
您无法实例化抽象类,因此无法直接对其进行测试。 虽然测试现有子类可能会起作用,但我个人将创建一个模拟子类仅用于测试,因此您知道您的子类不会覆盖任何具体方法,即使现有的子类今天不覆盖具体方法,将来有人可能会以某种方式修改子类,以使测试仍然成功但不再实际进行任何测试。
您不能创建抽象类的对象,但是可以创建具体子类的对象。
您在AbstractCurve中编写的代码由您的具体子类ConsumerCurve和ProducerCurve继承,因此您应该为这些类编写测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.