2013-04-08 21 views
0

我需要測試我的項目的所有模型類。下面是類Android中的測試模型類

public class TMyData{ 
    private mVar1; 
    private mVar2; 
    ... 

    private TMyData(){ 
    } 

    public static TMyData fromString(String str){ 
     ... 
    } 


    public String toString(){ 
     ... 
    } 


} 

只需之一,測試應該是:

1)創建一個隨機TMyData

2)調用toString

3)呼叫fromString

4)檢查它們是否一樣

問題是創建rand om TMyData。作爲測試類是獨立的一個(TMyDataTest),我不能做到以下幾點:

TMyData p = new TMyData(); //I can't, because its private 
p.mVar1 = ...; // I can't because is also private 

我不想改變我所有的變量/方法能見度只是因爲測試的......我也不要不希望用戶有權訪問私有變量(沒有獲取者或設置者)

很多人都有類似的問題,因爲所有的項目都有自己的模型。哪種測試方法是正確的?

+0

mVars從哪裏來? – 2013-04-09 00:20:27

+0

它們來自另一個解析另一個對象的構造函數。這個其他對象來自外部庫,我無法創建它。 – Corbella 2013-05-07 09:52:38

+0

然後使用反射 – 2013-05-07 14:06:42

回答

0

我只能通過反射來看到解決方案。

Field f = tmydata.getClass().getDeclaredField("mVar1"); //NoSuchFieldException 
f.setAccessible(true); 
f.set(tmydata,dataToSet); 
+0

嘗試了很多不同的東西后,這是最好的解決方案。謝謝 – Corbella 2013-06-05 10:52:33