知识大全 Eclipse 3.1中用注释单元测试框架(图)

Posted

篇首语:今日长缨在手,何时缚住苍龙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Eclipse 3.1中用注释单元测试框架(图)相关的知识,希望对你有一定的参考价值。

Eclipse 3.1中用注释单元测试框架(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  这篇文章将为大家介绍TestNG这个新的测试框架的特性 以及TestNG优于Junit X的地方     TestNG(Test Next Generation) 顾名思义 下一代的测试框架 它是基于J SE 的注释特性的而构建的轻量级的单元测试框架结构 说起单元测试框架 大家都会自然地联想到JUnit 用过JUnit X的程序开发人员 都会发现JUnit在提供了强大功能的同时 也存在很多令人沮丧的地方 其中一个问题就是 JUnit x 在每个测试方法调用前和调用后都会调用setUp()和tearDown()的方法 如果开发人员希望在不同的测试方法中重用同一个JDBC连接或者JNDI的Context的时候 会觉得很不方便 一般的解决这个问题的方法是使用静态方法 而这样的话 就必须小心并发控制的问题(多个线程访问共享的静态对象) 除此之外 JUnit X对于多线程测试也比较麻烦 需要其他模块的支持     这篇文章将为大家介绍TestNG这个新的测试框架的特性 以及TestNG优于Junit X的地方 众所周知 Eclipse不仅仅是功能强大的Java IDE 同时也是一个开放的应用集成平台 而Eclipse 提供了对J SE 的支持 因此 笔者将以Eclipse为运行环境 介绍Testng的安装 使用和运行 Eclipse 可以从下载      关于注释    由于TestNG是基于J SE 的注释特性所构建的 因此读者在阅读本文之前 必须了解注释的一些基本概念 关于J SE的注释特性 笔者曾经在另一篇文章中详细的介绍过 详细介绍请参考 参考资料 这里只简单的介绍一些概念     注释是J SE 所新提供的对于元数据的支持 程序开发人员可以在不改变原有逻辑的情况下 在源文件嵌入一些补充的信息 注释都是由@Interface annotationName 来声明的 注释可以用来修饰类定义 方法 域变量等等 使用的时候是在修饰的对象的定义前@annotationName 注释可以包含多个属性 使用的时候为属性赋值 例如 @annotationName(prop =value prop =value ) 程序的开发人员还可以通过Java的反射特性 在运行时获得这些注释的信息 在后面的章节中 大家会看到TestNG是如何使用它所定义的注释类型的来实现测试框架的      安装TestNG    在Eclipse中安装testNG很简单 和安装其他的plugin的方法相似 首先启动Eclipse 在Help >Sofare Update >Find and Install 在弹出的向导中 选择 Search New Features to Install 点击 New Remote Site 如图 所示 在URL中输入 点击 OK 如图 所示 点击 Finish Eclipse会帮助你完成下面的安装 熟悉Eclipse的读者对这个过程一定不会觉得陌生     图 新建Update Site   >  图 安装TestNG   >  安装好TestNG后 在Eclipse中单击 Window >Show View >Other >Java >TestNG TestNG的视图就打开了     图 TestNG的视图   >  注意 TestNG的视图的作用时为了现实测试结果 为了显示视图的功能 图 的视图是运行了一个测试用例后的结果 读者如果是第一次打开视图 应该是空白的      一个简单的例子    TestNG和JUnit不同 他使用注释 正则表达式和基于XML的配置文件对测试方法进行配置的 我们先来看一个简单的例子      ) 在Eclipse中创建一个Java的项目 catherine lab testng demo     ) 在Packet Explorer中 右键点击刚生成的项目 选择Properties      ) 在Properties属性框中 选择 Java Build Path 点击 Add External JARs…      ) 在文件浏览的对话框中 选择eclipse home directory/plugins/ beust testng eclipse_XXX/eclipse_testng jar 以及 eclipse home directory/plugins/ beust testng eclipse_XXX/lib/testng jdk jar/以及testng jdk jar 点击OK     ) 在Project中创建一个package: catherine lab testng firstTest 在package里边创建一个类 FristTestSample     清单 TestNG的第一个例子    package catherine lab testng firstTest;  import beust testng annotations *;  public class FirstTestSample   public FirstTestSample()   super();    @Test  public void testPass()   assert true :  This test should pass ;      @Test  public void testFail()   assert false : This test will fail ;      @Configuration(beforeTestClass = true)  public void doBeforeTests()   System out println( invoke before test class! );      @Configuration(afterTestClass = true)  public void doAfterTests()   System out println( invoke after test class! );         ) 在Eclipse中打开Run >Run 如图 所示 首先在选择使用TestNG的Project 而后在选择编写了测试逻辑的Class 点击Run 测试结果就显示在TestNG的视图中了 如图 所示     图 配置运行TestNG的程序   >  图 TestNG的运行结果   >  这是一个完整的测试用例 和JUnit不同 TestNG中实现测试逻辑的类不需要继承任何父类 测试方法也无需遵循testXXX的命名规则     TestNG的类是大家所非常熟悉的普通的Java类 而在这个类中 所有的被@Test这个注释所修饰的方法都会被当作测试方法来运行 除了测试类之外 TestNG还需要了一个配置文件 用来配置测试过程 以下是一个简单的配置文件 testng xml     清单 testNG的配置文件    <!DOCTYPE suite SYSTEM dtd >  <suite name= My First TestNG test >  <test name= Hello Test! >  <classes>  <class name= catherine lab testng firstTest FirstTestSample />  </classes>  </test>  </suite>    testng xml可以配置测试套件<suite> 类似于JUnit的TestSuite 而<test>类似于JUnit中的TestCase 所不同的是 TestNG中的测试套件可以包括多个测试用例 一个测试用例可以包括多个测试类 而一个测试类中可以定义多个测试方法 在下面的例子中 我们将看到这个配置文件更复杂的应用     在图 的运行配置中 我们也可以设置一个xml文件作为配置文件 而不是直接使用测试类 其实我们使用测试类的时候 testNG也帮我们生成了一个缺省的xml文件 不相信的话 你可以切换到Resource Perspective 然后刷新Workspace 就会发现这个project里边生成了一个xml文件 而这个文件就是TestNG的缺省的配置文件     现在我们再回到清单 大家在上面的程序清单中会发现 除了使用@Test这个注释以外 我们还使用了@Configuration这个注释 下面我们就来介绍@Configuration这个注释的用途     在注释Configuration中 定义了以下的属性     清单 configuration中的属性    public boolean beforeSuite() default false;  public boolean afterSuite() default false;    public boolean beforeTest() default false;  public boolean afterTest() default false;    public boolean beforeTestClass() default false;  public boolean afterTestClass() default false;    public boolean beforeTestMethod() default false;  public boolean afterTestMethod() default false;    beforeSuite=true 所修饰的方法将在测试套件(也就是配置文件中的Suite Tag)中任何一个方法调用之前 调用一次  afterSuite=true 所修饰的方法将在测试套件中所有方法都调用过后 调用一次  beforeTest=true 在测试用例(配置文件中Test Tag)中任何一个测试方法调用之前 调用一次  afterTest=true 在测试用例中任何所有方法都调用之后 调用一次  beforeTestClass=true 在测试类中任何测试方法调用之前 调用一次  afterTestClass=true 在这个测试类中所有方法都调用过后 调用一次  beforeTestMethod=true 在每个测试方法调用之前 调用一次  afterTestMethod=true 在每个测试方法调用之后 调用一次  这个清单 中doBeforeTests()方法 在任何一个test方法调用之前被调用一次 doAfterTests 就是所有的test方法运行过了以后再调用一次 从Console输出的信息中 我们可以验证这一点     图 console输出的运行信息   >  回页首     更复杂的例子    上一节中我们介绍了使用testNG的一个最简单的例子 这一节中我们将介绍一些关于testNG的高级应用 注释Test除了标志其修饰的方法为测试方法 还提供了groups的属性 比如上面例子的两个方法testPass()和testFail() 我们可以给这两个方法加上group的属性 cha138/Article/program/Java/ky/201311/28453

相关参考

知识大全 在Eclipse 3.1体验J2SE 5.0新特性二(图)

在Eclipse3.1体验J2SE5.0新特性二(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 在Eclipse 3.1体验J2SE 5.0新特性七(图)

在Eclipse3.1体验J2SE5.0新特性七(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 在Eclipse 3.1体验J2SE 5.0新特性八(图)

在Eclipse3.1体验J2SE5.0新特性八(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 JBuilder2005单元测试之JUnit框架

JBuilder2005单元测试之JUnit框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 关于Java单元测试中的伪对象介绍(图)

关于Java单元测试中的伪对象介绍(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在单元测

知识大全 使用eclipse调用.net web service

  以前我用的开发框架都是net现在换成javaEE框架和linux平台还需要一段时间的学习有时在测试工作中需要实现一些功能但是又不会用java实现怎么办呢?这里有一个方法使用net的框架开发webs

知识大全 Eclipse 3.1 WTP Web程序支持Beehive

Eclipse3.1WTPWeb程序支持Beehive  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Eclipse中文注释乱码解决

Eclipse中文注释乱码解决  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 在Eclipse 3.1体验J2SE 5.0新特性六

在Eclipse3.1体验J2SE5.0新特性六  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Eclipse+JBoss+EJB3的Session Bean注释方法

Eclipse+JBoss+EJB3的SessionBean注释方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快