[英]How to create objects in JUnit tests from abstract class
我有一个abstract class Printers
,我只想测试它的equals
方法,但是当我在PrintersTest
创建两个Printers
时,我无法实例化它们。
这是PrintersTest
:
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class PrintersTest {
@Test
void testEqualsObject() {
Printers a = new Printers("BW_LASER HP", "Laserjet 1230", "25", "180 euros");
Printers b = new Printers("BW_LASER HP", "Laserjet 1230", "25", "180 euros");
assertEquals(a,b);
}
}
这是Printers
类:
import java.util.Objects;
public abstract class Printers {
protected String brand;
protected String model;
protected String pages;
protected String price;
public Printers(String brand, String model, String pages, String price) {
super();
this.brand = brand;
this.model = model;
this.pages = pages;
this.price = price;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Printers)) {
return false;
}
Printers other = (Printers) obj;
return Objects.equals(brand, other.brand) && Objects.equals(model, other.model)
&& Objects.equals(pages, other.pages) && Objects.equals(price, other.price);
}
}
非常感谢你的帮助。
您需要从打印机扩展另一个类(可能您已经拥有它),例如打印机类型或其他类型,然后在您的测试类中,您创建一个基于该类的新打印机,如下所示:
@Test
void testEqualsObject() {
Printers a = new Bw("BW_LASER HP", "Laserjet 1230", "25", "180 euros");
Printers b = new Bw("BW_LASER HP", "Laserjet 1230", "25", "180 euros");
assertEquals(a,b);
}
这将解决您的问题,因为您不需要实例化打印机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.