如何在 android 中做单元测试

单元测试是软件开发中一项用来保证软件质量的重要技术,单元测试的好处我的不说了,呵呵,前段时间我写了一个个税计算器,把里面的一些业务方法都写了单元测试,因为在网上这方面的资料不多,只好啃自带的文档,里面有些东西写的比较简单,真正在做单元测试的时候还有些不够用
package com.wnmc.android.test;

import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

import com.wnmc.android.Culcultor;
import com.wnmc.android.R;

public class CulcultorTest extends ActivityInstrumentationTestCase2<Culcultor> {

private Culcultor mActivity;

private EditText mTaxPayable;
private EditText mTakeHomeMoney;
private EditText mMoneyShouldPayTax;

private EditText mTaxThreshold;
private EditText mInsuranceAndPension;
private EditText mIncome;
private Button rest;
private Button ok;

private Spinner mIncomeType;

public CulcultorTest() {
super("com.wnmc.android.Culcultor", Culcultor.class);
}

@Override
public Culcultor getActivity() {
// TODO Auto-generated method stub
return super.getActivity();
}

@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
super.setUp();
mActivity = getActivity();
mIncomeType = (Spinner) mActivity
.findViewById(R.id.CategoriesOfIncome_type);
mIncome = (EditText) mActivity.findViewById(R.id.income);
rest = (Button) mActivity.findViewById(R.id.reset);
ok = (Button) mActivity.findViewById(R.id.ok);
mTaxThreshold = (EditText) mActivity.findViewById(R.id.tax_threshold);
mInsuranceAndPension = (EditText) mActivity
.findViewById(R.id.insurance_and_pension);

mTaxPayable = (EditText) mActivity.findViewById(R.id.taxPayable);
mTakeHomeMoney = (EditText) mActivity.findViewById(R.id.takehomemoney);
mMoneyShouldPayTax = (EditText) mActivity
.findViewById(R.id.money_should_payTax);
}

public void testPreconditions() {
// assertTrue(resultViewStub != null);
assertTrue(mIncome != null);
assertTrue(mTaxThreshold != null);
assertTrue(mInsuranceAndPension != null);
assertTrue(mTaxPayable != null);
assertTrue(mMoneyShouldPayTax != null);
assertTrue(mTakeHomeMoney != null);
// assertTrue(wagesAndSalariesViewStub!=null);
}

public void testWagesAndSalaries() {
// 0~2000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("1800");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(0, mActivity.getType());
// 2000~4000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("2500");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("2475.0", mTakeHomeMoney.getText().toString());
// 4000~7000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("6800");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("6205.0", mTakeHomeMoney.getText().toString());
// 7000~22000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("20100");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("16855.0", mTakeHomeMoney.getText().toString());
// 22000~42000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("39000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("31125.0", mTakeHomeMoney.getText().toString());

// 42000~62000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("58000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("44575.0", mTakeHomeMoney.getText().toString());

// 62000~82000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("74000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("55175.0", mTakeHomeMoney.getText().toString());

// 82000~102000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("98000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("69975.0", mTakeHomeMoney.getText().toString());
// 大于102000
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("150000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("98775.0", mTakeHomeMoney.getText().toString());
}

public void testSelfEmployedAndCommercial() {
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
// 选中Spinner下拉列表的第二项
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(1, mActivity.getType());
// 不超过5000元的
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("4500");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("4275.0", mTakeHomeMoney.getText().toString());
// 不超过10,000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("9000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("8350.0", mTakeHomeMoney.getText().toString());
// 不超过30,000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("23000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("19650.0", mTakeHomeMoney.getText().toString());
// 不超过50,000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("46000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("36450.0", mTakeHomeMoney.getText().toString());
// 超过50,000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("76000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("56150.0", mTakeHomeMoney.getText().toString());

}

public void providingServices() {
// 选中Spinner下拉列表的第四项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(3, mActivity.getType());
// 不超过20000元的
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("18000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("15120.0", mTakeHomeMoney.getText().toString());

// 不超过50000元的
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("48000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("38480.0", mTakeHomeMoney.getText().toString());
// 超过50000元的
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("80000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("62800.0", mTakeHomeMoney.getText().toString());
}

public void testAuthorRemuneration() {
// 选中Spinner下拉列表的第五项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 4; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(4, mActivity.getType());

// 不超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("3900");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("3466.0", mTakeHomeMoney.getText().toString());
// 超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("8900");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("7903.2", mTakeHomeMoney.getText().toString());

}

public void testRoyalites() {
// 选中Spinner下拉列表的第六项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 5; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(5, mActivity.getType());

// 不超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("3900");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("3280.0", mTakeHomeMoney.getText().toString());
// 超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("8900");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("7476.0", mTakeHomeMoney.getText().toString());

}

public void testInterestDividendsBonuses() {
// 选中Spinner下拉列表的第七项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 6; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(6, mActivity.getType());

mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("8888");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("7110.4", mTakeHomeMoney.getText().toString());

}

public void testLeaseProperty() {
// 选中Spinner下拉列表的第八项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 7; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(7, mActivity.getType());
// 不超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("3400");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("2880.0", mTakeHomeMoney.getText().toString());
// 超过4000元
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("6400");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("5376.0", mTakeHomeMoney.getText().toString());

}

public void testTransferProperty() {
// 选中Spinner下拉列表的第九项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 8; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(8, mActivity.getType());
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("50000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("40000.0", mTakeHomeMoney.getText().toString());

}

public void testIncidentalIncome() {
// 选中Spinner下拉列表的第十项
mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncomeType.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
for (int i = 0; i < 9; i++) {
this.sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);

}
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals(9, mActivity.getType());

mActivity.runOnUiThread(new Runnable() {
public void run() {
mIncome.setText("50000");
ok.requestFocus();
}
});
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);
assertEquals("40000.0", mTakeHomeMoney.getText().toString());

}

@Override
protected void tearDown() throws Exception {

// TODO Auto-generated method stub
super.tearDown();
}

}

这是我为个税器写的部分单元测试代码,还在不断完善当中,要参考原项目,请自己去下载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值