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
相关产品推荐
相关产品推荐

