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

如何在JUnit中正确测试类的getter与setter方法?

报错根因
  1. Practice类的setName()返回值为void,调用该方法不会返回任何对象,无法作为参数传入其他方法
  2. Practice2类的setPractice()要求传入参数类型为ArrayList<Practice>,你传入的内容类型完全不匹配,自然会报类型错误。
正确测试逻辑

Getter/Setter的单元测试核心逻辑是验证赋值、读取的一致性:

  • 先构造测试对象,调用Setter方法写入预设的预期值
  • 调用对应Getter方法读取实际存储的值
  • 通过断言比对预期值和实际值是否相等,确认方法逻辑正确
修改后的完整测试代码
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.ArrayList;

public class GetterSetterTest {

    // 测试Practice类的Getter/Setter
    @Test
    public void testPracticeGetterSetter() {
        Practice practice = new Practice("Hello");
        // 调用setter修改属性
        String expectedName = "A";
        practice.setName(expectedName);
        // 断言getter读取结果与预期一致
        assertEquals(expectedName, practice.getName());
    }

    // 测试Practice2类的Getter/Setter
    @Test
    public void testPractice2GetterSetter() {
        Practice2 practice2 = new Practice2();
        Practice testObj = new Practice("Hello");
        testObj.setName("A");
        // 构造符合参数要求的ArrayList集合
        ArrayList<Practice> expectedList = new ArrayList<>();
        expectedList.add(testObj);
        // 调用setter赋值
        practice2.setPractice(expectedList);
        // 断言读取到的集合与预期一致
        assertEquals(expectedList, practice2.getPractice());
        // 可选:额外验证集合内元素属性正确
        assertEquals("A", practice2.getPractice().get(0).getName());
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:54:03