2014-10-27 45 views
0

我有一類是如下:單元測試類的構造函數作爲唯一的公共方法

class ToTest { 
    private MemberOne memberOne; 
    private MemberTwo memberTwo; 

    public ToTest(ParamOne paramOne, ParamTwo paramTwo) { 
     setMemberOne(paramOne); 
     setMemberTwo(paramTwo); 
    } 

    private setMemberOne(ParamOne paramOne) { 
     //Build the object. 
    } 

    private setMemberTwo(ParamTwo paramTwo) { 
     //build another object. 
    } 
} 

之所以制定者只能通過構造函數訪問的是,我不想換一次初始化的對象因爲memberOnememberTwo之間存在依賴關係(示例可以是MemberOne代表表頭並且MemberTwo代表表格中的數據並且保持編碼簡單並且沒有約束檢查是否列頭和數據集中的列數相等)。

作爲一種做法,我不寫私人方法的測試用例。編寫這個類的測試用例是一個很好的策略。

+1

對象甚至做了什麼呢? – FelixMarcus 2014-10-27 17:08:03

+0

問題是? – SaintLike 2014-10-27 17:10:16

+0

有一些獲取這些對象的方法,然後將它傳遞給JSP,通過編寫用於處理'MemberOne'和'MemberTwo'的標籤來提取信息。 – 2014-10-27 17:10:30

回答

2

您可以將建築物MemberOneMemberTwo提取到單獨的課程。

private setMemberOne(ParamOne paramOne) { 
    memberOne = new MemberOneBuilder().buildFromParam(paramOne); 
} 

public class MemberOneBuilder { 
    public MemberOne buildFromParam(ParamOne paramOne) { 
     .... 
    } 
} 

現在你可以很容易地分別測試了建設進程。

0

我可能會誤解這個,但是不能讓memberOne和memberTwo成爲final,然後讓setMemberOne和setMemberTwo成爲公共的嗎?然後你可以實例化memberOne和memberTwo,但是它們不能被改變。

0

這看起來更像是一個假設的場景,而爲了這樣做,如果我們需要編寫這樣一個代碼,並且爲它編寫測試用例,在Unit-Test類中使用Reflection就是隻有這裏出路。

相關問題