Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对Android活动进行单元测试_Java_Android_Unit Testing_Testing - Fatal编程技术网

Java 对Android活动进行单元测试

Java 对Android活动进行单元测试,java,android,unit-testing,testing,Java,Android,Unit Testing,Testing,我正在android studio中制作一个应用程序。对于这个项目,我必须进行多个单元测试。但是我不知道我可以对这个应用程序进行什么样的单元测试。我真的很难进行单元测试,所以如果有人能帮助我,或者提出一些可以在我的项目中实现的单元测试,我将不胜感激。它是一个应用程序,具有从web服务检索数据的listview 代码: public class MainActivity extends AppCompatActivity { ListView listView; ArrayAdapter<

我正在android studio中制作一个应用程序。对于这个项目,我必须进行多个单元测试。但是我不知道我可以对这个应用程序进行什么样的单元测试。我真的很难进行单元测试,所以如果有人能帮助我,或者提出一些可以在我的项目中实现的单元测试,我将不胜感激。它是一个应用程序,具有从web服务检索数据的listview

代码:

 public class MainActivity extends AppCompatActivity {

ListView listView;
ArrayAdapter<String> adapter;
String[] data;
String[] waarde;
String[] hoog;
String[] laag;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = findViewById(R.id.listview);

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());

    getData();

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent = new Intent(MainActivity.this, Showdata.class);
        intent.putExtra("teeltbed", listView.getItemAtPosition(position).toString());
        startActivity(intent);
        }
    });

}

private void getData()
{
    String getData = null;
    String dbResult = "empty";
    dbConnect database = new dbConnect(this);

    try{
        String query = "SELECT * FROM Lamp";
        getData = "?query=" + URLEncoder.encode(query, "UTF-8");
        //data += "&username=" + URLEncoder.encode(userName, "UTF-8");
        String link = "http://10.247.240.53/kas/lampen.php";
        dbResult = database.execute(link).get();
    }
    catch (Exception e){

    }

    try{
        JSONObject jsonObject = new JSONObject(dbResult);
        JSONArray array = jsonObject.getJSONArray("Lamp");
        waarde = new String[array.length()];
        data = new String[array.length()];
        hoog = new String[array.length()];
        laag = new String[array.length()];
        for (int i = 0; i < array.length(); i++)
        {
            jsonObject = array.getJSONObject(i);
            data[i] = jsonObject.getString("teeltbed");
            waarde[i] = "A: " + jsonObject.getString("waarde") + " %";
            hoog[i] = "H: " + jsonObject.getString("hoog") + " W/m2";
            laag[i] = "L: " + jsonObject.getString("laag") + " W/m2";

        }

        listView.setAdapter(new dataListAdapter(data, waarde, hoog, laag));
    }

    catch (Exception e)
    {
        e.printStackTrace();
    }
}

class dataListAdapter extends BaseAdapter{
    String[] data, waarde;

    dataListAdapter(){
        data = null;
        waarde = null;
    }

    public dataListAdapter(String[] sdata, String[]swaarde, String[]shoog, String[]slaag)
    {
        data = sdata;
        waarde = swaarde;
        hoog = shoog;
        laag = slaag;

    }

    public int getCount()
    {
        return data.length;
    }

    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public View getView (int position, View convertView, ViewGroup parent)
    {
        LayoutInflater inflater = getLayoutInflater();
        View row;
        row = inflater.inflate(R.layout.layout_list, parent, false);
        TextView t1, t2, t3, t4;
        t1 = (TextView) row.findViewById(R.id.list_item);
        t2 = (TextView) row.findViewById(R.id.list_item2);
        t3 = (TextView) row.findViewById(R.id.list_item3);
        t4 = (TextView) row.findViewById(R.id.list_item4);
        t1.setText(data[position]);
        t2.setText(waarde[position]);
        t3.setText(hoog[position]);
        t4.setText(laag[position]);
        return (row);
    }
}

class Sproeier
{
 public int TeeltBed;
 public String Stand;
 public double Actueel;
 public double Hoog;
 public double Laag;

 public void Sproeier()
 {
     int teeltbed;
     double hoog;
     double laag;
 }
}

class Lamp {

}

public static class ScadaWebservice
{

}

class Kas
{

    public void kas()
    {

    }
}
public类MainActivity扩展了AppCompatActivity{
列表视图列表视图;
阵列适配器;
字符串[]数据;
字符串[]瓦德;
弦[]胡;
字符串[]laag;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=findViewById(R.id.listView);
StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder().permitNetwork().build());
getData();
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意向意向=新意向(MainActivity.this、Showdata.class);
intent.putExtra(“teeltbed”,listView.getItemAtPosition(position.toString());
星触觉(意向);
}
});
}
私有void getData()
{
字符串getData=null;
字符串dbResult=“empty”;
dbConnect数据库=新的dbConnect(此);
试一试{
String query=“从灯中选择*”;
getData=“?query=“+urlcoder.encode(查询,“UTF-8”);
//数据+=”&username=“+urlcoder.encode(用户名,“UTF-8”);
字符串链接=”http://10.247.240.53/kas/lampen.php";
dbResult=database.execute(link.get();
}
捕获(例外e){
}
试一试{
JSONObject JSONObject=新的JSONObject(dbResult);
JSONArray数组=jsonObject.getJSONArray(“Lamp”);
waarde=新字符串[array.length()];
数据=新字符串[array.length()];
hoog=新字符串[array.length()];
laag=新字符串[array.length()];
对于(int i=0;i

}

所以你的应用确实没有很多方法可以测试,但从我看到你可以测试:

  • 单击项目listener上的列表视图
  • 如果将getData分成更小的部分,则可以测试是否得到响应或错误,以及是否在响应的情况下得到数据
对于UI测试,您可能需要查看本课程第8章:

或此代码实验室获取更多想法:

通常,在已经编写的代码上改装单元测试会导致“我无法对其进行单元测试”。首先使用单元测试编写的代码是可测试的,因为它们将公开钩子来创建测试。对于Android UI测试,您可能会发现单元测试只能在纯java类上实现(它不应该包含任何与Android相关的内容),因为您需要采用adnroid架构组件所建议的任何设计模式。。我们有mvvm和mvp,你可以在github上看到android蓝图,看看mvp和mvvm的例子,它们还有单元和浓缩咖啡测试用例