JAVA 利用MyEclipse结合TestNG测试框架进行单元测试
利用MyEclipse结合TestNG测试框架进行单元测试
by:授客 QQ:1033553122
测试环境
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);
}
}
运行结果


个人理解
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 利用MyEclipse结合TestNG测试框架进行单元测试的更多相关文章
- java利用myeclipse自带三大框架搭建三大框架(Hibernate+Struts2+Spring)过程详解
搭建过程因人而异,我的搭建过程大致是这样的: 1.创建一个javaweb项目: 2.导入Spring框架,上图: 2.1: 2.2: 2.3: 3.导入struts2框架,上图: 3.1: 3.2: ...
- TestNG测试框架在基于Selenium进行的web自动化测试中的应用
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ TestNG+Selenium+Ant TestNG这个测试框架可以很好的和基于Selenium的 ...
- TestNg测试框架使用笔记
Gradle支持TestNG test { useTestNG(){ //指定testng配置文件 suites(file('src/test/resources/testng.xml')) } } ...
- JAVA 利用反射自定义数据层框架
之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者 ...
- java分享第十八天( JAVA利用enum结合testng做数据驱动示例)
数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@DataProvider中写死等等,我们今天介绍一下利用enum来做数据源,先来看一下enum的写法: p ...
- JAVA利用enum结合testng做数据驱动示例
数据驱动是做自动化测试中很重要的一部分,数据源的方案也是百花八门了,比如利用外部文件,直接在@DataProvider中写死等等,我们今天介绍一下利用enum来做数据源,先来看一下enum的写法: p ...
- 利用MyEclipse配置S2SH三大框架篇-Spring配置
1.配置完Struts2后,然后配置Spring 2.单击“MyEclipse->Project Capabilities->Add Spring Capabilities” 3.选择Sp ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- Spring TestContext测试框架搭建
同样是测试,JUnit和Spring TestContext相比,Spring TestContext优势如下: 1.Spring TestContext可以手动设置测试事务回滚,不破坏数据现场 2. ...
随机推荐
- Xamarin.Android 制作搜索框
前段时间仿QQ做了一个搜索框样式,个人认为还不错,留在这里给大家做个参考,希望能帮助到有需要的人. 首先上截图(图1:项目中的样式,图2:demo样式): 不多说直接上代码: Main.axml &l ...
- ajax实现异步前后台交互,模拟百度搜索框智能提示
1.什么是异步?在传统的网站项目中,填写一堆数据,最后点击提交,在点击提交的这一刻才实现数据提交,前后台交互.在你点击提交之前数据是没有提交到后台的.这样就会造成很大的不便.比如,我填了一大堆数据,结 ...
- “五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰
在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公司以 ...
- 使用EF+ASP.NET MVC+Bootstrap开发一个功能强大的问卷调查系统
功能简介 支持七大题型 下拉选择题.单选题.多选题.填空题.数字题.问答题.组合/矩阵题(单选组合.多选组合.填空组合.数字组合) 题库支持 每个问卷都要设置姓名.年龄.性别.学历,怎么办?题库帮您轻 ...
- 扒光IT界江湖骗子巴蜀万明的底裤
扒光IT界江湖骗子巴蜀万明的底裤 北京IT界出了个江湖骗子,名叫万明,常年在北京IT界乃至中国IT界招摇撞骗.因其姓名太过大众化,容易误伤他人,对搜索引擎也不够友好,所以前缀以其招摇撞骗常用的一家空壳 ...
- Spring Cloud微服务下的权限架构调研
随着微服务架构的流行,系统架构调整,项目权限系统模块开发提上日程,需要对权限架构进行设计以及技术选型.所以这段时间看了下相关的资料,做了几个对比选择. 一.架构图 初步设想的架构如下,结构很简单:eu ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- .NET CoreCLR 源码调试
https://github.com/dotnet/coreclr/blob/master/Documentation/building/windows-instructions.md https:/ ...
- c++Volatile关键词
看到的一篇文章觉得还不错吧,文章具体位置也找不到了,复制一下,留着日后复习 背景 此微博,引发了朋友们的大量讨论:赞同者有之:批评者有之:当然,更多的朋友,是希望我能更详细的解读C/C++ Volat ...
- C#隐藏与显示系统任务栏和开始菜单栏按钮
隐藏与显示系统任务栏和开始菜单栏按钮:直接上代码: private const int SW_HIDE = 0; //隐藏 private const int SW_REST ...