Junit一、什么是junit采用测试驱动开发的方式,在开发前先写好测试代码,主要说明被测试的代码会被如何使用,错误处理等,然后开始写代码。
并在测试代码中逐步测试这些代码。
直到最后在测试代码中完全通过。
二、Junit功能1)管理测试用例。
修改了哪些代码。
这些代码的修改会对哪些部分由影响,通过junit将这次的修改做完成测试。
2)定义了测试代码,textcase根据源代码的测试需要定义每个textcase,并将Textcase添加到相应的Textsuit以方便管理。
3)定义测试环境,在Textcase测试前会先调用“环境”配置。
在测试中使用,当然也可以在测试用例中直接定义测试环境。
4)检测测试结果。
对于每种正常、异常情况下的测试,运行结果是什么。
结果是够是我们预料的等。
都需要有明确的定义。
Junit在这方面提供了强大的功能。
三、Junit核心类Textsuit:测试用例的集合Textcase:定义运行多个测试用例TextListener:测试中若产生事件,会通知TextListenerBaseTextRunner:TextRunner用来启动测试界面TextResult:收集一个测试案例的结果。
测试结果分为失败和错误。
Assert:当条件成立时,assert方法保持沉默,但若条件不成立就抛出异常四、使用举例4.1方法一:第一步、新建一个Android项目JUnit_Test,file-new-android project,然后编写一个Calculator类,new java class,实现简单的加、减、乘、除的计算器,然后对这些功能进行单元测试。
类的代码如下:package com.neusoft;public class Calculator {private int result;public void add(int n) {result = result + n;}public void substract(int n) {result = result - 1; //Bug: 正确的应该是 result =result-n}public void multiply(int n) {}public void divide(int n) {result = result / n;}public void square(int n) {result = n * n;}public void squareRoot(int n) {for (; ;) ; //Bug : }public void clear() {result = 0;}public int getResult() {return result;}}第二步、将JUnit4单元测试包引入这个项目:在该项目上点右键,点“属性”,在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”按钮,然后在新弹出的对话框中选择JUnit4并点击确定,JUnit4软件包就被包含进我们这个项目了。
第三步、在Eclipse的Package Explorer中用右键点击该类弹出菜单,选择new—选择“J unit Text Case”。
在弹出窗口,选择new JUnit 4 text,在which method stubs would you like to creat?处选择setUp。
点击“next”后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。
此处,我仅对“加、减、乘、除”四个方法进行测试。
点击Finish后,系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。
只需要将这些测试用例稍作修改即可使用。
完整的CalculatorTest代码如下:package com.neusoft;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;import org.junit.Ignore;public class CalculatorTest {private static Calculator calculator = new Calculator();@Beforepublic void setUp() throws Exception {calculator.clear();}@Testpublic void testAdd() {calculator.add(2);calculator.add(3);assertEquals(5, calculator.getResult());}@Testpublic void testSubstract() {calculator.add(10);calculator.substract(2);assertEquals(8, calculator.getResult());}@Ignore("Multiply() Not yet implemented")@Testpublic void testMultiply() {fail("Not yet implemented");}@Testpublic void testDivide() {calculator.add(8);calculator.divide(2);assertEquals(4, calculator.getResult());}}第四步,运行测试代码:按照上述代码修改完毕后,在CalculatorTest类上点右键,选择“Run As -JUnit Test”,会弹出下面对话框选择Use configuration specific settings,选择Android Junit Test Launcher,点击ok。
在结果当中,进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示“共进行了4个测试,其中1个测试被忽略,一个测试失败”。
点击左侧各个测试类,可在Failure Trace处显示出失败信息。
4.2方法二这里我们以项目工程EPG为例,进行一下测试。
第一步:右键点击EPG工程,选择new-Other…-Android下的Android Test Project。
如图所示点击next,进入如下界面。
输入Project name,这里我输入EPGTest,在Select the project to test处选择An existing Android project 点击Browse 选择需要测试的工程。
这里选择的是EPG。
Build Target 选择与测试工程一致的版本。
此处为Android3.1。
点击finish。
完成创建。
第二部:在新建的测试程序中添加类,命名为TestWeeklyEPGActivity,让此类继承自ActivityInstrumenttationTestCase2<WeeklyEPGActivity>,然后加入所需要的包。
加入的包为所测试工程的Activity的包名加名称。
import com.sony.btv.epg.jp.basic.Titlebar;import com.sony.btv.epg.jp.basic.WeeklyEPGActivity; import com.sony.btv.epg.jp.R;import android.test.ActivityInstrumentationTestCase2; import android.view.View;完整的测试代码如下package com.sony.btv.epg.jp.test;import com.sony.btv.epg.jp.basic.Titlebar;import com.sony.btv.epg.jp.basic.WeeklyEPGActivity;import com.sony.btv.epg.jp.R;import android.test.ActivityInstrumentationTestCase2;import android.view.View;public class TestWeeklyEPGActivity extends ActivityInstrumentationTestCase2<WeeklyEPGActivity> {private View mainLayout;public TestWeeklyEPGActivity() {super("com.sony.btv.epg.jp.basic", WeeklyEPGActivity.class);}/* (non-Javadoc)* @see android.test.ActivityInstrumentationTestCase2#setUp()*/protected void setUp() throws Exception {super.setUp();WeeklyEPGActivity mainActivity = getActivity();mainLayout = (View) mainActivity.findViewById(yout.epg);}public void testCreateTitleBar(){assertNotNull(mainLayout);Titlebar titlebar = null;titlebar = (Titlebar)mainLayout.findViewById(R.id.epg_titlebar);assertNotNull(titlebar);}}第三部,进入AndroidManifest.xml,添加<instrumentationandroid:targetPackage="com.sony.btv.epg.jp"android:name="android.test.InstrumentationTestRunner" />和<uses-library android:name ="android.test.runner"/> 第四步,首先运行程序EPG,然后右键点击EPGTest-run as-Run Configurations,在左侧框内选择Android Junit Test目录下的EPGTest,然后点击run运行EPGTest。