首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JUnit测试中从抽象类创建对象

如何在JUnit测试中从抽象类创建对象
EN

Stack Overflow用户
提问于 2019-01-02 21:26:45
回答 1查看 186关注 0票数 1

我有一个abstract class Printers,我只想测试它的equals方法,但是当我在PrintersTest中创建两个Printers时,我无法实例化它们。

这是PrintersTest

代码语言:javascript
复制
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类:

代码语言:javascript
复制
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);
    }
}

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 21:35:14

您需要从printers (可能已有)扩展另一个类,例如一种打印机或其他任何类型,然后在您的测试类中,基于该类创建一个新的printer,如下所示:

代码语言:javascript
复制
@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);
    }

这将解决您的问题,因为您将不需要实例化打印机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54007214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档