前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA 利用MyEclipse结合TestNG测试框架进行单元测试

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

作者头像
授客
发布2019-09-11 16:14:53
3730
发布2019-09-11 16:14:53
举报
文章被收录于专栏:授客的专栏授客的专栏

测试环境

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测试框架进行单元测试
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测试框架进行单元测试
JAVA <wbr>利用MyEclipse结合TestNG测试框架进行单元测试
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档