4 回答

TA贡献1946条经验 获得超4个赞
此示例中的问题是它没有显示设置值后如何使用该值。这就是如何测试它的线索。
如果不使用,则 setter 就没用,也应该删除。
它是受保护的,所以我猜有一个子类正在使用它。在这种情况下,我将使用测试子类的方法。
如果通过反射使用,我也会通过反射来测试它。

TA贡献1835条经验 获得超7个赞
您可以声明一个具有 getter 的本地子类:
@Test
void testSetAssSpec(){
class SubAssigment extends Assignment {
String getter() { return AssName; }
}
String assignmentName = "CSE101";
SubAssigment cseAssigment = new SubAssigment();
cseAssigment.SetAssSpec(String assignmentName);
assertEquals(assignmentName, cseAssignment.getter());
}
您可能并不真正需要测试 Java 分配是否有效。

TA贡献1876条经验 获得超6个赞
测试 getter 方法可能有些过头了,但是如果您想在没有 getter 的情况下检查/测试对象中私有变量的值,您可以使用反射
Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException
f.setAccessible(true);
String assignmentName = (String) f.get(obj);

TA贡献1804条经验 获得超8个赞
String assignmentName = "CSE101";
Assignment cseAssigment = new Assignment();
cseAssigment.SetAssSpec(String assignmentName);
assertEquals(AssSpec ,ReflectionTestUtils.getField(cseAssigment, "AssSpec"));
添加回答
举报