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"));
添加回答
舉報