Java 对Android活动进行单元测试
我正在android studio中制作一个应用程序。对于这个项目,我必须进行多个单元测试。但是我不知道我可以对这个应用程序进行什么样的单元测试。我真的很难进行单元测试,所以如果有人能帮助我,或者提出一些可以在我的项目中实现的单元测试,我将不胜感激。它是一个应用程序,具有从web服务检索数据的listview 代码:Java 对Android活动进行单元测试,java,android,unit-testing,testing,Java,Android,Unit Testing,Testing,我正在android studio中制作一个应用程序。对于这个项目,我必须进行多个单元测试。但是我不知道我可以对这个应用程序进行什么样的单元测试。我真的很难进行单元测试,所以如果有人能帮助我,或者提出一些可以在我的项目中实现的单元测试,我将不胜感激。它是一个应用程序,具有从web服务检索数据的listview 代码: public class MainActivity extends AppCompatActivity { ListView listView; ArrayAdapter<
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分成更小的部分,则可以测试是否得到响应或错误,以及是否在响应的情况下得到数据
通常,在已经编写的代码上改装单元测试会导致“我无法对其进行单元测试”。首先使用单元测试编写的代码是可测试的,因为它们将公开钩子来创建测试。对于Android UI测试,您可能会发现单元测试只能在纯java类上实现(它不应该包含任何与Android相关的内容),因为您需要采用adnroid架构组件所建议的任何设计模式。。我们有mvvm和mvp,你可以在github上看到android蓝图,看看mvp和mvvm的例子,它们还有单元和浓缩咖啡测试用例