zoukankan      html  css  js  c++  java
  • JAVA 利用MyEclipse结合TestNG测试框架进行单元测试

    利用MyEclipse结合TestNG测试框架进行单元测试

     

    by:授客 QQ1033553122

    测试环境

    jdk1.8.0_121

     

    myeclipse-10.0-offline-installer-windows.exe

     

    TestNG插件 org.testng.eclipse_6.8.6.20130607_0745

     

     

    代码组织结构

     

    代码示例

    Humman.java存放了需要进行测试的类

     

    package mypackage;

     

    public class Humman {

    String name = "";

    String sex = "";

    String foodForEat = "";

     

    public Humman(String name, String sex){

    this.name = name;

    this.sex = sex;

    }

     

    public void eat(String food){

    if(food == ""){

    System.out.println("啥都没得吃");

    this.foodForEat = "";

    }else if(food == "apple"){

    System.out.println("在吃苹果");

    this.foodForEat = "apple";

    }

    }

     

    public String getFoodForEat(){

    return this.foodForEat;

    }

    // public static void main(String args[]){

    // Humman shouke = new Humman("shouke", "M");

    // shouke.eat("apple");

    // }

    }

     

     

    HummanTest.java 存放TestNG测试类

    代码1:

    package unittests;

     

    import mypackage.Humman;

     

    import org.testng.annotations.Test;

    import static org.testng.AssertJUnit.*;

     

    public class HummanTest {

     

    @Test

    public void testGetFoodForEat() {

    Humman shouke = new Humman("shouke", "M");

    String FoodForEat = shouke.getFoodForEat();

    assertEquals("", FoodForEat);

    }

     

    @Test(dependsOnMethods = { "testGetFoodForEat" })

    public void testEatWithFoodEqualsApple() {

    Humman shouke = new Humman("shouke", "M");

    shouke.eat("apple");

    String FoodForEat = shouke.getFoodForEat();

    assertEquals("apple", FoodForEat);

    }

     

    @Test(dependsOnMethods = { "testGetFoodForEat" })

    public void testEatWithFoodEmpty() {

    Humman shouke = new Humman("shouke", "M");

    shouke.eat("");

    String FoodForEat = shouke.getFoodForEat();

    assertEquals("", FoodForEat);

    }

    }

     

    代码2

    package unittests;

     

    import mypackage.Humman;

     

    import org.testng.annotations.Test;

    import static org.testng.AssertJUnit.*;

     

    public class HummanTest {

    Humman shouke;

     

    public HummanTest(){

    this.shouke = new Humman("shouke", "M");

    }

     

    @Test

    public void testGetFoodForEat() {

    String FoodForEat = this.shouke.getFoodForEat();

    assertEquals("", FoodForEat);

    }

     

    @Test(dependsOnMethods = { "testGetFoodForEat" })

    public void testEatWithFoodEqualsApple() {

    this.shouke.eat("apple");

    String FoodForEat = this.shouke.getFoodForEat();

    assertEquals("apple", FoodForEat);

    }

     

    @Test(dependsOnMethods = { "testGetFoodForEat" })

    public void testEatWithFoodEmpty() {

    this.shouke.eat("");

    String FoodForEat = this.shouke.getFoodForEat();

    assertEquals("", FoodForEat);

    }

    }

     

     

     

    运行结果

    JAVA <wbr>利用MyEclipse结合TestNG测试框架进行单元测试

     

     

     

     

    个人理解

    1、撇开对TestNG之类的测试框架进行封装、自行开发框架不谈,如果以类方法、函数为单元的话,个人觉得对单元测试主要就是构造对象(如果有必要的话),对类方法、函数进行传参调用,然后检测结果。

     

    2、单元测试的核心是用例设计,这块网上查找白盒测试用例设计相关资料

     

    3、思考了下,如果基于TestNG进行二次开发,只写一个测试类和一个测试方法,估计有点困难,因为被测试类的构造函数不同,并且每个方法的输入参数和输出结果也都不一样,所以,即便是用反射机制也似乎很不好处理。不过我们可以做些参数化处理,这样还可以减少测试方法的编写

     

    package unittests;

     

    import org.testng.annotations.DataProvider;

    import org.testng.annotations.Test;

    import static org.testng.AssertJUnit.*;

     

    import mypackage.Humman;

     

    public class HummanTest {

    Humman shouke;

     

    public HummanTest(){

    this.shouke = new Humman("shouke", "M");

    }

     

    @Test

    public void testGetFoodForEat() {

    String FoodForEat = this.shouke.getFoodForEat();

    assertEquals("", FoodForEat);

    }

     

    @Test(dependsOnMethods = { "testGetFoodForEat" }, dataProvider = "dataprovider")

    public void testEat(Object... args) {

    this.shouke.eat((String)args[0]);

    String FoodForEat = this.shouke.getFoodForEat();

    assertEquals(args[1], FoodForEat);

    }

     

    @Test

    @DataProvider(name = "dataprovider")

    public Object[][] providFood(){

    return new Object[][]{

    {"", ""},

    {"apple", "apple"},

    };

    }

     

    }

     

    运行结果:

    JAVA <wbr>利用MyEclipse结合TestNG测试框架进行单元测试

     

  • 相关阅读:
    房地产电话销售资料
    为什么要买二手房,不买一手房
    三句话教你买对房子!买到好房子的都祝福哥三年内赚两个亿!
    如何建立与客户之间的信赖与友谊!和客户电话聊天时会出现那些突发障碍!客户到底想要找什么样的房子?
    技术帖:砖混、砖木、钢混、板楼、塔楼、框架、框架剪力墙等概念之区别优劣
    Redhat 企业版 LINUX AS5.0 下载地址
    写代码如坐禅:你是哪一类程序员
    VMware Workstation 8正式版下载+密钥序列号
    在线修改图片尺寸缩放网站(完美解决图片过大无法上传问题)
    程序员编程需要多少个小时?
  • 原文地址:https://www.cnblogs.com/shouke/p/10157587.html
Copyright © 2011-2022 走看看