亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為沒有 getter 方法的 setter 方法編寫單元測試?

如何為沒有 getter 方法的 setter 方法編寫單元測試?

繁花不似錦 2024-01-05 17:03:30
我有一堂課看起來像這樣public class Assignment {   protected String AssName;   public void SetAssSpec(String theSpec){     this.AssSpec = theSpec;   }}這是我的測試課程class AssignmentTest {   @Test   void testSetAssSpec(){       String assignmentName = "CSE101";       Assignment cseAssigment = new Assignment();       cseAssigment.SetAssSpec(String assignmentName);       //Now what?   }} 因為沒有getter方法。訪問集合字符串的另一種方法是,cseAssigment.AssName但問題是 AssName 受到保護,所以我無法訪問它。我將如何測試它?我是測試和 Junit 的新手。那么,請告訴我這是否有意義?
查看完整描述

4 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

此示例中的問題是它沒有顯示設置值后如何使用該值。這就是如何測試它的線索。

如果不使用,則 setter 就沒用,也應該刪除。

它是受保護的,所以我猜有一個子類正在使用它。在這種情況下,我將使用測試子類的方法。

如果通過反射使用,我也會通過反射來測試它。


查看完整回答
反對 回復 2024-01-05
?
qq_花開花謝_0

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 分配是否有效。



查看完整回答
反對 回復 2024-01-05
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

測試 getter 方法可能有些過頭了,但是如果您想在沒有 getter 的情況下檢查/測試對象中私有變量的值,您可以使用反射


Field f = obj.getClass().getDeclaredField("AssName"); //NoSuchFieldException

f.setAccessible(true);

String assignmentName = (String) f.get(obj); 


查看完整回答
反對 回復 2024-01-05
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

String assignmentName = "CSE101";

Assignment cseAssigment = new Assignment();

cseAssigment.SetAssSpec(String assignmentName);

assertEquals(AssSpec ,ReflectionTestUtils.getField(cseAssigment, "AssSpec"));


查看完整回答
反對 回復 2024-01-05
  • 4 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號