首页 > 其他分享 >Test class should have exactly one public zero-argument constructor(测试类应该只有一个公共零参数构造函数)

Test class should have exactly one public zero-argument constructor(测试类应该只有一个公共零参数构造函数)

时间:2023-10-14 18:47:08浏览次数:33  
标签:orderId return exactly argument Order orderName obj public 构造函数

在练习重写equals方法时写测试方法遇到这个问题

先放报错代码:

public class Order {
    int orderId;
    String orderName;

    public int getOrderId() {
        return orderId;
    }

    public void setOrderId(int orderId) {
        this.orderId = orderId;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

 

    public Order(int orderId, String orderName) {
        this.orderId = orderId;
        this.orderName = orderName;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (obj instanceof Order order) {
            return orderId == order.orderId && orderName.equals(order.orderName);
        }
        return false;
    }

    @Test
    public void test2() {
        Order order1 = new Order(1,"2023-3-16购买");
        Order order2 = new Order(1,"2023-3-16购买");
        System.out.println(order1.equals(order2) ? "相同" : "不同");
    }
}

img
这也是我第一次遇到这个错误“测试类里面只允许存在一个无参构造方法”。
起因:为偷懒、直接在类里面写测试方法。然后实例化类的时候使用了带参的构造方法。
结果:报错!
解决方法:删掉带参的构造方法,实例化时用set()方法给属性赋值。

public class Order {
    int orderId;
    String orderName;

    public int getOrderId() {
        return orderId;
    }

    public void setOrderId(int orderId) {
        this.orderId = orderId;
    }

    public String getOrderName() {
        return orderName;
    }

    public void setOrderName(String orderName) {
        this.orderName = orderName;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (obj instanceof Order order) {
            return orderId == order.orderId && orderName.equals(order.orderName);
        }
        return false;
    }

    @Test
    public void test2() {
        Order order1 = new Order();
        order1.setOrderName("2023-03-13下单");
        order1.setOrderId(1);
        Order order2 = new Order();
        order2.setOrderId(2);
        order2.setOrderName("2023-03-13下单");
        System.out.println(order1.equals(order2) ? "相同订单" : "不同订单");
    }
}


img
解决!!

标签:orderId,return,exactly,argument,Order,orderName,obj,public,构造函数
From: https://www.cnblogs.com/PIGGY-lit/p/17764523.html

相关文章

  • [JavaScript]arguments对象
    当我们不确定有多少个参数传递的时候,可以使用arguments来获取。在JavaScript中,arguments实际上是充当函数的内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。arguments展示形式是一个伪数组,可以进行遍历。伪数组具有以下特点:1.......
  • Argument for '--moduleResolution' option must be: 'node', Unknown compiler opt
    node_modules/@vue/tsconfig/tsconfig.json(12,25):errorTS6046:Argumentfor'--moduleResolution'optionmustbe:'node','classic','node16','nodenext'.node_modules/@vue/tsconfig/tsconfig.json(33,5):erro......
  • C# Webapi 简单的依赖注入-构造函数
    控制器部分:usingMicrosoft.AspNetCore.Mvc;usingWebApplication1.IServices;usingWebApplication1.Utility.SwaggerExt;namespaceWebApplication1.Controllers{[ApiController][Route("[controller]")]//指定当前的控制器是哪个Swagger版本的指定给......
  • vue中下载excel文件4种方法,2、通过 a 标签 download 属性结合 blob 构造函数下载发送p
    vue中下载excel文件4种方法,2、通过a标签download属性结合blob构造函数下载发送post请求和后台poi返回文件流实现下载1、通过url下载即后端提供文件的地址,直接使用浏览器去下载通过window.location.href=文件路径下载window.location.href=`${location.origin}/opera......
  • java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a M
    原文链接:https://www.longkui.site/error/java-lang-illegalargumentexception-expected-multiparthttpservletrequest-is-a-multipartresolver-configured/4837/0.背景JAVA后台一个上传excel的接口,如下:importData(@RequestParam("file")MultipartFilefile)然后,前台按......
  • QT5.14: 打开文件出错warning: format '%s' expects argument of type 'char*'
    错误提示信息:D:\Demo\QT5.14\CH5\CH501\imgprocessor.cpp:158:warning:format'%s'expectsargumentoftype'char*',butargument2hastype'QChar*'[-Wformat=]printf("fileName:%s\n",filename.data());原函数代码:......
  • C++ 转换构造函数
    在C++中如果一个构造函数只有一个参数,那么这个构造函数就是转换构造函数(ConvertingConstructor),这个构造函数可以将参数类型转换成构造函数所在的类对应的类型。举个例子,假设有如下类Complex:1classComplex{2private:3inti;4intj;56public:......
  • 函数模板_构造函数栈溢出
    前言最近写一个任务队列,可以支持存入返回值为void的任意函数对象。需要定义一个Task模板,来存储函数对象以及参数。大致的实现如下:classTask{public:template<typenameFunc,typename...Args>Task(Func&&f,Args&&...args):func_(std::bind(std::for......
  • 完美解决TypeError: ‘encoding’ is an invalid keyword argument for this function
    完美解决TypeError:‘encoding’isaninvalidkeywordargumentforthisfunction文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:TypeError:‘encoding’isaninvalid......
  • 已解决tensorflow.python.framework.errors_impl.InvalidArgumentError: slice index
    已解决tensorflow.python.framework.errors_impl.InvalidArgumentError:sliceindex1ofdimension0outofbounds.文章目录报错问题解决方法声明报错问题之前在工作中遇到过这个坑,记录一下问题以及解决方法,不一定针对所有情况都能用,但是可以供大家参考。问题描述如下:tensor......