JUnit使用方法以及测试代码覆盖率Word文档下载推荐.docx
- 文档编号:7155063
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:14
- 大小:241.96KB
JUnit使用方法以及测试代码覆盖率Word文档下载推荐.docx
《JUnit使用方法以及测试代码覆盖率Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JUnit使用方法以及测试代码覆盖率Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
测试中若产生事件,会通知TextListener
BaseTextRunner:
TextRunner用来启动测试界面
TextResult:
收集一个测试案例的结果。
测试结果分为失败和错误。
Assert:
当条件成立时,assert方法保持沉默,但若条件不成立就抛出异常
四、使用举例
4.1方法一:
第一步、新建一个Android项目JUnit_Test,file-new-androidproject,然后编写一个Calculator类,newjavaclass,实现简单的加、减、乘、除的计算器,然后对这些功能进行单元测试。
类的代码如下:
packagecom.neusoft;
publicclassCalculator{
privateintresult;
publicvoidadd(intn){
result=result+n;
}
publicvoidsubstract(intn){
result=result-1;
//Bug:
正确的应该是result=result-n
publicvoidmultiply(intn){}
publicvoiddivide(intn){
result=result/n;
publicvoidsquare(intn){
result=n*n;
publicvoidsquareRoot(intn){
for(;
;
);
//Bug:
}
publicvoidclear(){
result=0;
publicintgetResult(){
returnresult;
第二步、将JUnit4单元测试包引入这个项目:
在该项目上点右键,点“属性”,在弹出的属性窗口中,首先在左边选择“JavaBuildPath”,然后到右上选择“Libraries”标签,之后在最右边点击“AddLibrary…”按钮, 然后在新弹出的对话框中选择JUnit4并点击确定,JUnit4软件包就被包含进我们这个项目了。
第三步、在Eclipse的PackageExplorer中用右键点击该类弹出菜单,选择new—选择“JunitTextCase”。
在弹出窗口,选择newJUnit4text,在whichmethodstubswouldyouliketocreat?
处选择setUp。
点击“next”后,系统会自动列出你这个类中包含的方法,选择你要进行测试的方法。
此处,我仅对“加、减、乘、除”四个方法进行测试。
点击Finish后,系统会自动生成一个新类CalculatorTest,里面包含一些空的测试用例。
只需要将这些测试用例稍作修改即可使用。
完整的CalculatorTest代码如下:
importstaticorg.junit.Assert.*;
importorg.junit.Before;
importorg.junit.Test;
importorg.junit.Ignore;
publicclassCalculatorTest{
privatestaticCalculatorcalculator=newCalculator();
@Before
publicvoidsetUp()throwsException{
calculator.clear();
@Test
publicvoidtestAdd(){
calculator.add
(2);
calculator.add(3);
assertEquals(5,calculator.getResult());
publicvoidtestSubstract(){
calculator.add(10);
calculator.substract
(2);
assertEquals(8,calculator.getResult());
@Ignore("
Multiply()Notyetimplemented"
)
publicvoidtestMultiply(){
fail("
Notyetimplemented"
);
publicvoidtestDivide(){
calculator.add(8);
calculator.divide
(2);
assertEquals(4,calculator.getResult());
第四步,运行测试代码:
按照上述代码修改完毕后,在CalculatorTest类上点右键,选择“RunAs-JUnitTest”,会弹出下面对话框
选择Useconfigurationspecificsettings,选择AndroidJunitTestLauncher,点击ok。
在结果当中,进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示“共进行了4个测试,其中1个测试被忽略,一个测试失败”。
点击左侧各个测试类,可在FailureTrace处显示出失败信息。
4.2方法二
这里我们以项目工程EPG为例,进行一下测试。
第一步:
右键点击EPG工程,选择new-Other…-Android下的AndroidTestProject。
如图所示
点击next,进入如下界面。
输入Projectname,这里我输入EPGTest,在Selecttheprojecttotest处选择AnexistingAndroidproject点击Browse选择需要测试的工程。
这里选择的是EPG。
BuildTarget选择与测试工程一致的版本。
此处为Android3.1。
点击finish。
完成创建。
第二部:
在新建的测试程序中添加类,命名为TestWeeklyEPGActivity,让此类继承自ActivityInstrumenttationTestCase2<
WeeklyEPGActivity>
,然后加入所需要的包。
加入的包为所测试工程的Activity的包名加名称。
importcom.sony.btv.epg.jp.basic.Titlebar;
importcom.sony.btv.epg.jp.basic.WeeklyEPGActivity;
importcom.sony.btv.epg.jp.R;
importandroid.test.ActivityInstrumentationTestCase2;
importandroid.view.View;
完整的测试代码如下
packagecom.sony.btv.epg.jp.test;
publicclassTestWeeklyEPGActivityextendsActivityInstrumentationTestCase2<
{
privateViewmainLayout;
publicTestWeeklyEPGActivity(){
super("
com.sony.btv.epg.jp.basic"
WeeklyEPGActivity.class);
/*(non-Javadoc)
*@seeandroid.test.ActivityInstrumentationTestCase2#setUp()
*/
protectedvoidsetUp()throwsException{
super.setUp();
WeeklyEPGActivitymainActivity=getActivity();
mainLayout=(View)mainActivity.findViewById(R.layout.epg);
publicvoidtestCreateTitleBar()
assertNotNull(mainLayout);
Titlebartitlebar=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-libraryandroid:
name="
android.test.runner"
/>
第四步,首先运行程序EPG,然后右键点击EPGTest-runas-RunConfigurations,在左侧框内选择AndroidJunitTest目录下的EPGTest,然后点击run运行EPGTest。
第五步,运行结束,可以看到和上面第一种方法一样的结果。
此处不再叠述。
五、案例分析
1.包含必需的包
2.测试类的声明
测试类是一个独立的类,没有任何父类。
测试类的名字也可以任意命名,没有任何局限性。
所以不能通过类的声明来判断它是不是一个测试类。
3.创建一个待测试的对象
要测试哪个类,那么首先就要创建一个该类的对象。
正如上面案例中的代码:
privatestaticCalculatorcalculator=newCalculator();
为了测试Calculator类,必须创建一个calculator对象。
4.测试方法的声明
在测试类中,并不是每一个方法都是用于测试的,必须使用“标注”来明确表明哪些是测试方法。
“标注”是JDK5的一个新特性,用在此处非常恰当。
可以看到,在某些方法的前有@Before、@Test、@Ignore等字样,这些就是标注,以一个“@”作为开头。
这些标注都是JUnit4自定义的,熟练掌握这些标注的含义非常重要。
5.编写一个简单的测试方法
首先,要在方法的前面使用@Test标注,以表明这是一个测试方法。
对于方法的声明也有如下要求:
名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。
如果违反这些规定,会在运行时抛出一个异常。
至于方法内该写些什么,那就要看需要测试些什么了。
比如:
@Test
我想测试一下“加法”功能是否正确,就在测试方法中调用几次add函数,初始值为0,先加2,再加3,我们期待的结果应该是5。
如果最终实际结果也是5,则说明add方法是正确的,反之说明它是错的。
assertEquals(5,calculator.getResult());
就是来判断期待结果和实际结果是否相等,第一个参数填写期待结果,第二个参数填写实际结果,也就是通过计算得到的结果。
这样写好之后,JUnit会自动进行测试并把测试结果反馈给用户。
JUnit提供了一种方法来区别他们,那就是在这种测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。
这样的话测试结果就会提示你有几个测试被忽略,而不是失败。
一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
6.忽略测试某些尚未完成的方法
JUnit提供了一种方法,就是在未完成的测试函数的前面加上@Ignore标注,这个标注的含义就是“某些方法尚未完成,暂不参与此次测试”。
当你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
7.Fixture
Fixture的含义就是“在某些阶段必然被调用的代码”。
比如我上面的测试,由于只声明了一个Calculator对象,他的初始值是0,但是测试完加法操作后,他的值就不是0了;
接下来测试减法操作,就必然要考虑上次加法操作的结果。
这绝对是一个很糟糕的设计!
我们非常希望每一个测试都是独立的,相互之间没有任何耦合度。
因此,我们就很有必要在执行每一个测试之前,对Calculator对象进行一个“复原”操作,以消除其他测试造成的影响。
因此,“在任何一个测试执行之前必须执行的代码”就是一个Fixture,我们用@Before来标注它,如前面例子所示:
这里不在需要@Test标注,因为这不是一个test,而是一个Fixture。
同理,如果“在任何测试执行之后需要进行的收尾工作”也是一个Fixture,使用@After来标注。
参数timeout,指定被测试方法被允许运行的最长时间应该是多少,如果测试方法运行时间超过了指定的毫秒数,则JUnit认为测试失败。
8.设置最长执行时间
。
@Test(timeout)
9.类级别Fixture的设置方法
注解@BeforeClass修饰用于初始化Fixture的方法。
注解@AfterClass修饰用于注销Fixture的方法
@BeforeClass
publicstaticvoiddbInit(){//类级别Fixture初始化方法
@AfterClass
publicstaticvoiddbClose(){//类级别Fixture注销方法
类级别的Fixture方法,仅会在测试类中所有测试方法执行之前执行初始化,并在全部测试方法测试完毕之后执行注销方法。
10.JunitGUI
Junit.runner包中定义了Junit测试框架的交互模式。
BaseTextRunner抽象类是这个包的核心,所有Junit框架和外界进行交互的行为都被此包定义。
有三种交互模式:
1)字符串模式
2)Swing模式
3)AWT模式
六、计算通过使用单元测试代码覆盖率
1.安装EclEmma插件
安装EclEmma插件的工程和大部分Eclipse插件相同,在此我选择从站点下载zip文件并解压到eclipse所在的目录中。
进入
2.EclEmma的使用
上面我们已经对Calculator进行了Junit测试,之后我们点击新增按钮选择CoverageasJunitText。
执行之后,程序窗口的代码会变颜色。
其中绿色便是该行代码被完整的执行,红色部分便是该行代码根本没有执行,黄色的行便是该行代码部分被执行。
除此之外,在下面还有一个单独的视图来统计程序的覆盖代码率。
EclEmma提供的Coverage视图能够分层的显示代码的覆盖测试率。
从图中我们可以读出代码运行之后的覆盖率。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JUnit 使用方法 以及 测试 代码 覆盖率
![提示](https://static.bingdoc.com/images/bang_tan.gif)