如何在JUnit中正确测试类的getter与setter方法?
报错根因
Practice类的setName()返回值为void,调用该方法不会返回任何对象,无法作为参数传入其他方法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
相关产品推荐
相关产品推荐

