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

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

 

 

 

转载于:https://www.cnblogs.com/shouke/p/10157587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值