4 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
此示例中的問(wèn)題是它沒(méi)有顯示設(shè)置值后如何使用該值。這就是如何測(cè)試它的線索。
如果不使用,則 setter 就沒(méi)用,也應(yīng)該刪除。
它是受保護(hù)的,所以我猜有一個(gè)子類正在使用它。在這種情況下,我將使用測(cè)試子類的方法。
如果通過(guò)反射使用,我也會(huì)通過(guò)反射來(lái)測(cè)試它。

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以聲明一個(gè)具有 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());
}
您可能并不真正需要測(cè)試 Java 分配是否有效。

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊
測(cè)試 getter 方法可能有些過(guò)頭了,但是如果您想在沒(méi)有 getter 的情況下檢查/測(cè)試對(duì)象中私有變量的值,您可以使用反射
Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException
f.setAccessible(true);
String assignmentName = (String) f.get(obj);

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊
String assignmentName = "CSE101";
Assignment cseAssigment = new Assignment();
cseAssigment.SetAssSpec(String assignmentName);
assertEquals(AssSpec ,ReflectionTestUtils.getField(cseAssigment, "AssSpec"));
添加回答
舉報(bào)