gpt4 book ai didi

java - 如何在 JUnit 测试中正确包含 Android 操作系统类

转载 作者:太空宇宙 更新时间:2023-11-04 15:22:52 26 4
gpt4 key购买 nike

我正在编写一段与 Android 应用程序一起使用的代码。我正在尝试一些事情,所以我有一些非常脏的(即封装得不好但有效)测试。问题是我最近尝试包含一个测试来创建模型对象。然而,为了更好地使用 Android Activity ,我正在实现 Parcelable。因此,当我尝试运行测试时,我发现...

Caused by: java.lang.ClassNotFoundException: android.os.Parcelable at java.net.URLClassLoader$1.run(URLClassLoader.java:359) at java.net.URLClassLoader$1.run(URLClassLoader.java:348) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:347) at 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 more

我尝试将以下文件夹添加到我的类路径中(在 Eclipse 中的调试配置下)

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

但我仍然收到错误。如果没有创建一个在实际设备上运行的整个大包,有没有办法可以包含一个 jar 或其他东西来让它工作?

最佳答案

这就是我将 Parcelable 从模型类中分离出来的想法。这是一个例子...

package com.gleason.apahelper.model.parcelable;

导入java.util.ArrayList;导入java.util.List;

导入com.gleason.apahelper.model.Team;

导入android.os.Parcel;导入 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];
}
};


}

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

关于java - 如何在 JUnit 测试中正确包含 Android 操作系统类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com