You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java测试:不使用Junit拆分测试类与主方法遇到的报错问题

错误根因

  • 你将原属于HousePet类的print()方法错误移到了TestQuest类中,HousePet类本身没有定义该方法,调用时报方法不存在错误。
  • petName、yearBorn是HousePet类的private私有属性,仅允许在HousePet类内部访问,其他类中直接引用这两个变量时,Java会查找当前类的同名变量,找不到就会报变量未定义错误。
  • 你尝试的pet1.System.out.println属于语法错误,System是JDK内置类,不是HousePet的成员,不能通过类实例调用。

修复方案

推荐遵循面向对象封装规范,将打印逻辑放回业务类,同时可补充getter方法供外部按需获取属性:

1. 修改HousePet类代码

package simplequestion;

public class HousePet {
    public static final String DEFAULT_NAME = "Zz$$$";
    public static final int DEFAULT_YEARBORN = 2021;
    private String petName;
    private int yearBorn;

    public HousePet() {
        petName = DEFAULT_NAME;
        yearBorn = DEFAULT_YEARBORN;
    }

    // 打印方法放回业务类内部,可直接访问私有属性
    public void print() {
        System.out.println("Name = " + petName);
        System.out.println("Year Born = " + yearBorn);
    }

    // 补充getter方法,允许外部类获取私有属性值
    public String getPetName() {
        return petName;
    }

    public int getYearBorn() {
        return yearBorn;
    }
}

2. 编写测试类TestQuest代码

package simplequestion;

public class TestQuest {
    public static void main(String[] args) {
        // 用法1:直接调用封装好的打印方法
        HousePet pet = new HousePet();
        pet.print();

        // 用法2:通过getter方法获取属性后自行打印
        System.out.println("自定义打印:Name = " + pet.getPetName());
        System.out.println("自定义打印:Year Born = " + pet.getYearBorn());
    }
}

内容的提问来源于stack exchange,提问作者Jonn Mc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:54:03