2013-11-26 44 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]; 
    } 
}; 


} 

我还没有完全测试它,所以我不接受这个答案,但它似乎工作。我会很乐意接受更好的(或更好解释的)答案。

相关问题