junit-testng-zhao

JUnit 4 与 TestNG 的对比

http://www.ibm.com/developerworks/cn/java/j-cq08296/

http://blog.csdn.net/jmyue/article/details/9041357

http://www.importnew.com/16270.html

 

TestNGJUnit的相同点:

       1. 使用annotation,且大部分annotation相同。

       2. 都可以进行单元测试(Unit test)。

       3. 都是针对Java测试的工具。

TestNGJUnit的不同点:

      1. JUnit只能进行单元测试,TestNG可以进行单元测试,功能测试,端到端测试,集成测试等。

      2. TestNG需要一个额外的xml配置文件,配置测试的classmethod甚至package

      3. TestNG的运行方式更加灵活:命令行、antIDEJUnit只能使用IDE

      4. TestNGannotation更加丰富,比如@ExpectedExceptions@DataProvider等。

      5. 测试套件运行失败,JUnit 4会重新运行整个测试套件。TestNG运行失败时,会创建一个XML文件说明失败的测试,利用这个文件执行程序,就不会重复运行已经成功的测试。

 

  • 一个简单的测试用例

JUnit 中我必须把@BeforeClass 修饰的方法声明为 static,这又要求我把 fixture,即 finder 声明为 static。我还必须把 init() 声明为 publicTestNG,您就会发现不同。这里不再需要那些规则了。我的 init() 方法既不是 static,也不是 public

  • 依赖性测试

JUnit 框架想达到的一个目标就是测试隔离。它的缺点是:人们很难确定测试用例执行的顺序,而这对于任何类型的依赖性测试都非常重要。开发者们使用了多种技术来解决这个问题,例如,按字母顺序指定测试用例,或是更多地依靠 fixture 来适当地解决问题。

JUnit 不同,TestNG 利用 Test 注释的 dependsOnMethods 属性来应对测试的依赖性问题。有了这个便利的特性,就可以轻松指定依赖方法。例如,前面所说的登录将在某个方法之前 运行。此外,如果依赖方法失败,它将被跳过,而不是标记为失败。

一旦 TestNG 中出现失败,它就会创建一个 XML 配置文件,对失败的测试加以说明。如果利用这个文件执行 TestNG 运行程序,TestNG 运行失败的测试。

  • 参数化测试

通过在 TestNG XML 配置文件中放入参数化数据,就可以对不同的数据集重用同一个测试用例,甚至有可能会得到不同的结果。这种技术完美地避免了只能 假定一切正常的测试,或是没有对边界进行有效验证的情况。

  • 高级参数化测试

尽管从一个 XML 文件中抽取数据会很方便,但偶尔会有些测试需要有复杂类型,这些类型无法用 String 或原语值来表示。TestNG 可以通过它的 @DataProvider 注释处理这样的情况。@DataProvider 注释可以方便地把复杂参数类型映射到某个测试方法。

Junit

  • 如何生成测试代码

  • 运行
  • 运行全部

  • 运行单个方法

  • 生成测试报告(xml形式)

http://blog.sina.com.cn/s/blog_8af106960102v6qh.html

https://www.ibm.com/developerworks/cn/java/j-lo-junit4/

可以生成html形式但是试验没有成功

 

  • Junit测试
  • JUnit中按照顺序执行测试方式
     

http://www.cnblogs.com/nexiyi/p/junit_test_in_order.html

写了一堆的test case,希望某一些test case必须在某个test case之后执行。比如,测试某一个Dao代码,希望添加的case在最前面,然后是修改或者查询,最后才是删除,以前的做法把所有的方法都集中到某一个方法去执行,一个个罗列好,比较麻烦。比较幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三种方式对test执行顺序进行指定

 

  • 平台能够生成测试所需要的初始化和清理方法

https://netbeans.org/kb/docs/java/junit-intro_zh_CN.html#Exercise_31

  • 测试类初始化程序。@BeforeClass 标注将方法标记为测试类初始化方法。测试类初始化方法只能运行一次,并且在测试类中的任何其他方法之前运行。举例来说,您不必在测试初始化函数中创建数据库连接并在各测试方法之前创建新连接,您可以在运行测试之前使用测试类初始化函数打开连接。然后,您可以使用测试类终结方法来关闭连接。
  • 测试类终结方法。@AfterClass 标注将方法标记为测试类终结方法。测试类终结方法只能运行一次,并且在测试类中的任何其他方法完成之后运行。
  • 测试初始化程序。@Before 标注将方法标记为测试初始化方法。测试初始化方法在测试类中的各测试用例之前运行。运行测试不需要测试初始化方法,但是,如果您需要在运行测试之前初始化一些变量,则可以使用测试初始化方法。
  • 测试终结方法。@After 标注将方法标记为测试终结方法。测试终结方法在测试类中的各测试用例之后运行。运行测试不需要测试终结方法,但是,您可能需要使用终结方法来清理运行测试用例时所需的任何数据。
    • !平台自动生成的代码能够指定测试用例间依赖关系

    JUnit 框架主要聚焦于测试的隔离,暂时还不支持这个特性。

    http://blog.csdn.net/lhy_ycu/article/details/45281449

    基于Junit3.8Junit4.x的单元测试详解

    注意事项:
    1
    Junit的原则:keep the bar green to keep the code clean2)测试类与(源代码)目标类的包名尽量要一致,最终它们都会被编译到同一个目录下面,这样就不用导入源代码所在的包。
    3)
    测试类的命名规则:测试类类名 = 目标类类名前或后加Test; 注意要统一。
    4)
    测试类必须继承TestCase; 测试用例(方法/)与测试用例之间一定是完全独立的,不允许出现任何的依赖关系。同时也不能依赖测试方法的执行顺序,也就是删除或注释掉某个测试方法后,其他的测试方法依然能够执行。
    5)
    测试源代码的私有方法可以采取两种方式:1、修改目标方法的访问修饰符(private修改为public,一般不推荐);2、使用反射在测试类中调用目标类的私有方法。

     

    • Junit不需要插件安装

    Testng

    官网地址

    http://testng.org/doc/index.html

     

    TestNG for Eclipse 插件安装
    • 第一种

     

     

    • 第二种

    地址输入

    testng - http://beust.com/eclipse

    如何找到该地址

     

     

    TestNG for Eclipse 插件源码

    Testng教程

    http://www.yiibai.com/testng/20130913292.html

    testng_eclipse使用教程

    http://testng.org/doc/eclipse.html#eclipse-viewing

    http://www.ibm.com/developerworks/cn/java/j-test-ng/

    http://www.ibm.com/developerworks/cn/java/j-testng/index.html 包含测试代码链接

     

    testing插件进行测试问题以及解决

    Software caused connection abort: socket write error

    解决重新安装testng插件或者更换eclipse

     

     

     

     

posted @ 2016-06-16 08:38  zhaozhenqiang  阅读(317)  评论(0编辑  收藏  举报