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测试框架进行单元测试

     

  • 相关阅读:
    css 响应式布局
    【nodejs】async
    vue移动appUI框架搭建-选取mintUI
    浅谈开发流程_敏捷开发流程_迭代流程的理解
    一篇业务需求上的数据处理问题--后台API只返回四个字段ABCD,现在数据量较大有20万条,一列上要展示ABCDABCDABCD这么些字段
    vue列表鼠标滚动翻页(数据量较大,几千万条数据,因此要滚动翻页,为了性能良好,鼠标滚动时发送请求页码page++),网上找不到自己写了一个,
    app移动端 rem和px的换算
    vue搜索关键字字体高亮, map映射新数组,replace替换,font字体样式
    vue文字截取方法 :title | filterFun方法过滤
    什么是正则表达式?
  • 原文地址:https://www.cnblogs.com/shouke/p/10157587.html
Copyright © 2011-2022 走看看