热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用MyEclipse和TestNG测试框架在Java中高效进行单元测试

通过MyEclipse集成TestNG测试框架,可以在Java开发中高效地进行单元测试。本文介绍了在JDK1.8.0_121和MyEclipse10.0离线环境下配置和使用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);

}

}

 

 

 

运行结果

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

 

 

 

 

 

个人理解

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

 

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

 

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

 

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 &#61; new Humman("shouke", "M");

}

 

&#64;Test

public void testGetFoodForEat() {

String FoodForEat &#61; this.shouke.getFoodForEat();

assertEquals("", FoodForEat);

}

 

&#64;Test(dependsOnMethods &#61; { "testGetFoodForEat" }, dataProvider &#61; "dataprovider")

public void testEat(Object... args) {

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

String FoodForEat &#61; this.shouke.getFoodForEat();

assertEquals(args[1], FoodForEat);

}

 

&#64;Test

&#64;DataProvider(name &#61; "dataprovider")

public Object[][] providFood(){

return new Object[][]{

{"", ""},

{"apple", "apple"},

};

}

 

}

 

运行结果&#xff1a;

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

 

 

 

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



推荐阅读
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • Java 9 中 SafeVarargs 注释的使用与示例解析 ... [详细]
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • 状态模式在软件设计中的应用与实现
    本文以酒店管理系统为例,探讨了状态模式在软件设计中的应用与实现。酒店房间的状态包括空闲、已预订和已入住,这些状态之间可以相互转换。通过引入状态模式,系统能够更加灵活地管理和响应不同状态下的操作,提高了代码的可维护性和扩展性。此外,状态模式还简化了状态转换的逻辑处理,使得系统的整体架构更为清晰和高效。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 在使用群报数小程序进行高效接龙与统计时,可以通过创建 `LinkedList` 对象并利用 `for` 循环生成指定数量的 `Person` 对象,为每个人员分配唯一的编号,并将其添加到 `LinkedList` 集合中。这一过程确保了数据的有序性和高效管理,便于后续的接龙和统计操作。此外,该小程序还支持实时更新和查看参与人员的状态,进一步提升了活动组织的便利性和准确性。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • Java 中优先级队列的轮询方法详解与应用 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 在生产环境中进行高效部署与优化 ... [详细]
author-avatar
9asd8fy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有