2013-11-26 39 views
1

我有一段代碼用於與Android應用程序一起使用。我正在嘗試一些東西,所以我有一些非常骯髒的(I.E.封裝不好但工作正常)測試。問題是我最近試圖包含一個測試,該測試覆蓋了創建模型對象。但是,爲了更好地玩Android活動,我正在實施Parcelable。所以,當我嘗試運行我的測試中,我看到了如何在JUnit中正確包含Android操作系統類test

造成的:拋出java.lang.ClassNotFoundException:在java.net.URLClassLoader的$ 1.run android.os.Parcelable (URLClassLoader.java:359) 在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:348) 在java.security.AccessController.doPrivileged(本機方法) 在java.net.URLClassLoader.findClass(URLClassLoader.java:347) 是java。 lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 38更多

我想(在Eclipse下調試配置)將以下文件夾到我的類路徑

ADT/sdk/platforms/android-10/data/android/os 

但我仍然得到錯誤。在實際設備上創建一個完整的大型軟件包的缺點是有沒有一種方法可以包括一個jar或什麼東西來使其運行?

回答

0

這就是我想到的,我將Parcelable從模型類中分離出來。這裏是一個例子...

package com.gleason.apahelper.model.parcelable; 

import java.util.ArrayList; import java.util.List;

import com.gleason.apahelper.model.Team;

import android.os.Parcel; import android.os.Parcelable;

public class TeamParcel implements Parcelable{ 
private Team team; 

public static TeamParcel[] getParcelable(List<Team> teams){ 
    TeamParcel[] parcel = new TeamParcel[teams.size()]; 
    for(int i = 0 ; i < teams.size(); i++){ 
     parcel[i] = new TeamParcel(); 
     parcel[i].team = teams.get(i); 
    } 
    return parcel; 
} 


public static List<Team> getTeams(TeamParcel[] parcels){ 
    List<Team> list = new ArrayList<Team>(); 
    for(TeamParcel parcel : parcels){ 
     list.add(parcel.team); 
    } 
    return list; 
} 
public TeamParcel(){ 
} 

public TeamParcel(Parcel in){ 
    String[] data = new String[2]; 
    in.readStringArray(data); 
    team = new Team(); 
    team.setTeamId(Integer.parseInt(data[0])); 
    team.setTeamName(data[1]); 
} 

@Override 
public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 
@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeStringArray(new String[] {String.valueOf(team.getTeamId()), 
      team.getTeamName()}); 
} 
public static final Parcelable.Creator<TeamParcel> CREATOR = new Parcelable.Creator<TeamParcel>() { 
    public TeamParcel createFromParcel(Parcel in) { 
     return new TeamParcel(in); 
    } 
    public TeamParcel[] newArray(int size) { 
     return new TeamParcel[size]; 
    } 
}; 


} 

我還沒有完全測試它,所以我不接受這個答案,但它似乎工作。我會很樂意接受更好的(或更好解釋的)答案。

相關問題