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

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

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

 


测试环境

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 {

Stringname ="";

Stringsex ="";

StringfoodForEat ="";

 

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(Stringargs[]){

//Humman shouke = newHumman("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 {

Hummanshouke;

 

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 {

Hummanshouke;

 

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"},

};

}

 

}

 

运行结果:

 

 

目录
相关文章
|
1天前
|
存储 算法 安全
深入理解Java中的集合框架
【9月更文挑战第34天】本文将带你走进Java的集合框架,探索其背后的设计哲学和实现细节。我们将从集合的基本概念出发,逐步深入到具体的接口和类的实现,最后通过一个实际的例子来展示如何在Java程序中高效地使用集合。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和深度理解。
9 1
|
11天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
557 8
|
10天前
|
算法 Java
Java项目不使用框架如何实现限流?
Java项目不使用框架如何实现限流?
20 2
|
16天前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
31 5
|
16天前
|
机器学习/深度学习 数据采集 JavaScript
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
ADR药品不良反应监测系统是一款智能化工具,用于监测和分析药品不良反应。该系统通过收集和分析病历、处方及实验室数据,快速识别潜在不良反应,提升用药安全性。系统采用Java开发,基于SpringBoot框架,前端使用Vue,具备数据采集、清洗、分析等功能模块,并能生成监测报告辅助医务人员决策。通过集成多种数据源并运用机器学习算法,系统可自动预警药品不良反应,有效减少药害事故,保障公众健康。
ADR智能监测系统源码,系统采用Java开发,基于SpringBoot框架,前端使用Vue,可自动预警药品不良反应
|
22天前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
49 6
|
1月前
|
IDE 测试技术 持续交付
Python自动化测试与单元测试框架:提升代码质量与效率
【9月更文挑战第3天】随着软件行业的迅速发展,代码质量和开发效率变得至关重要。本文探讨了Python在自动化及单元测试中的应用,介绍了Selenium、Appium、pytest等自动化测试框架,以及Python标准库中的unittest单元测试框架。通过详细阐述各框架的特点与使用方法,本文旨在帮助开发者掌握编写高效测试用例的技巧,提升代码质量与开发效率。同时,文章还提出了制定测试计划、持续集成与测试等实践建议,助力项目成功。
54 5
|
1月前
|
Java 数据库连接 Apache
Java进阶-主流框架总结与详解
这些仅仅是 Java 众多框架中的一部分。每个框架都有其特定的用途和优势,了解并熟练运用这些框架,对于每一位 Java 开发者来说都至关重要。同时,选择合适框架的关键在于理解框架的设计哲学、核心功能及其在项目中的应用场景。随着技术的不断进步,这些框架也在不断更新和迭代以适应新的开发者需求。
39 1
|
2月前
|
测试技术 C# 开发者
“代码守护者:详解WPF开发中的单元测试策略与实践——从选择测试框架到编写模拟对象,全方位保障你的应用程序质量”
【8月更文挑战第31天】单元测试是确保软件质量的关键实践,尤其在复杂的WPF应用中更为重要。通过为每个小模块编写独立测试用例,可以验证代码的功能正确性并在早期发现错误。本文将介绍如何在WPF项目中引入单元测试,并通过具体示例演示其实施过程。首先选择合适的测试框架如NUnit或xUnit.net,并利用Moq模拟框架隔离外部依赖。接着,通过一个简单的WPF应用程序示例,展示如何模拟`IUserRepository`接口并验证`MainViewModel`加载用户数据的正确性。这有助于确保代码质量和未来的重构与扩展。
30 0
|
2月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
39 0
下一篇
无影云桌面