首页 > 其他分享 >JUNIT搭配easytest做数据驱动的单元测试

JUNIT搭配easytest做数据驱动的单元测试

时间:2022-12-08 13:07:02浏览次数:51  
标签:name Double calculator 单元测试 Param public easytest expected JUNIT


原文在https://www.javacodegeeks.com/2016/12/data-driven-testing-junit-easytest.html

摘要如下:
JUNIT做数据驱动的测试比较麻烦,所谓数据驱动的测试,就是比如同样的一个方法,能用EXCEL,CSV等格式提供大量的不同测试数据给测试去验证,这里可以使用
easytest这个不错的开源工具,地址在:https://github.com/EaseTech/easytest

下面例子讲解:

1) 比如一个加法的:

public class Calculator {
public Double add(Double a, Double b){
return a+b;
}
}



2) MAVEN引入EASYTEST


<dependency>
<groupId>org.easetech</groupId>
<artifactId>easytest-core</artifactId>
<version>1.4.0</version>
</dependency>



3 然后可以编制CSV或者EXCEL,记得第1列是要测试的方法名,内容留空,


然后是每列的参数


[img]https://www.javacodegeeks.com/wp-content/uploads/2016/12/shantonu_Selection_248.jpg[/img]



[img]https://www.javacodegeeks.com/wp-content/uploads/2016/12/shantonu_Selection_249.jpg[/img]



4 CSV测试的:



@RunWith(DataDrivenTestRunner.class)
public class CSVLoaderExample extends DataDrivenTest {

@Test @DataLoader(filePaths = "calculator.csv", loaderType = LoaderType.CSV)
public String testAddFromCSV(@Param(name = "a") Double a,
@Param(name = "b") Double b,
@Param(name = "expected") Double expected) {
Assert.assertEquals(expected, calculator.add(a, b), 0.1);
return "success";

}
@Test @DataLoader(filePaths = "calculator2.csv")
public void testAdd(@Param(name = "a") Double a, @Param(name = "b")Double b, @Param(name = "expected")Double expected){
Assert.assertEquals(expected, calculator.add(a,b),0.1);
}
}



首先继承DataDrivenTest ,然后用注解 @DataLoader(filePaths = "calculator.csv", loaderType = LoaderType.CSV) 标识是用CSV,XML还是EXCEL


然后@Param(name = "a")中的NAME就是对应EXCEL或CSV文件中的列的标题了



EXCEL也是一样:


@RunWith(DataDrivenTestRunner.class)
public class ExcelLoaderExample extends DataDrivenTest {
@Test @DataLoader(filePaths = "calculator.xls", loaderType = LoaderType.EXCEL)
public void testAddFromExcel(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {
Assert.assertEquals(expected, calculator.add(a, b), 0.1);
}
@Test @DataLoader(filePaths = {"calculator2.xls"})
public void testAdd(@Param(name = "a") Double a, @Param(name = "b")Double b, @Param(name = "expected")Double expected){
Assert.assertEquals(expected, calculator.add(a,b),0.1);
}

}



4 还有不错的报表功能,可以输出:


@RunWith(DataDrivenTestRunner.class)
@Report(outputLocation = "classpath:TestReports")
public class ClassPathExampleReport extends DataDrivenTest{

@Test @DataLoader(filePaths = "calculator.xls")
public void testAddFromExcel(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {
Assert.assertEquals(expected, calculator.add(a, b), 0.1);
}
@Test @DataLoader(filePaths = "calculator2.xls")
public void testAdd(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {

Assert.assertEquals(expected, calculator.add(a, b), 0.1);
}
}



这样就在TARGET目录下有个目录是TestReports,


[img]https://www.javacodegeeks.com/wp-content/uploads/2016/12/shantonu_Selection_254.jpg[/img]


标签:name,Double,calculator,单元测试,Param,public,easytest,expected,JUNIT
From: https://blog.51cto.com/u_14230175/5920956

相关文章

  • 评估篇 | 单元测试评估也能复用到集成测试?脚本帮你高效评估!
    前言  上次我们分享了单元测试用例的复用,单元测试的用例可以复用到集成测试,那单元测试的评估是否也可以复用到集成测试?答案是可以的。 TPT中提供了多种多样的评估......
  • 单元测试概述
    什么是单元测试本质上也是代码,但它的主要目的是用来验证业务代码的正确性、健壮性和稳定性,甚至是性能。它是代码级的测试。传统意义上的单元测试一般指软件的最小粒度模......
  • Spring Boot 单元测试笔记
    1.导入JUnit5测试框架<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope......
  • 【坑】springboot使用Junit进行单元测试报错
    在使用myeclipse写了一个简单的springboot的demo进行进行Junit测试的时候,发现一直是这个错误,刚开始遇到这个问题,还以为是别人博客里面写的不够清晰,哪里没有注意到的问题,结果......
  • 12.第三章第8节: 2021.11.11 集合与并发编程 没用 第三章第10节: 2021.11.16 单元测试与
                    ......
  • junit之测试顺序
    BriefJunit4.11里增加了指定测试方法执行顺序的特性测试类的执行顺序可通过对测试类添加注解“@FixMethodOrder(value)”来指定,其中value为执行顺序三种执行顺序可......
  • junit复习1 @before class @after class
    先看代码publicclassJunitTest1{privateCollectioncollection;@BeforeClasspublicstaticvoidoneTimeSetUp(){//one-......
  • Junti单元测试
    Junit单元测试##测试分类黑盒测试,白盒测试黑盒测试,不需要写代码,给输入值,看程序是否能够输出期望的值白盒测试,需要写代码的,关注程序的具体执行流程Junit使用是白......
  • Golang-单元测试
    单元测试针对使用传统方式测试代码块的不足:1)测试代码块需要在main函数中去调用,需要修改main函数,若项目正在运行,就可能去停止项目,不方便2)不利于管理,当需要测试多个函数或多个......
  • 使用NUnit做单元测试(总结版)
    使用NUnit做单元测试(总结版)一、本文摘要: ●什么单元测试 ●什么是NUnit ●NUnit的下载以及安装 ●NUnit的启动 ●NUnit的最简单使用 ●验证设计的功能是否实现 ......