JUNIT搭配easytest做数据驱动的单元测试 - jackyrong - ITeye博客

阅读更多

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

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

下面例子讲解:

1) 比如一个加法的:
  

Java代码  收藏代码 "收藏这段代码")

  1. publicclass Calculator {  
  2.     public Double add(Double a, Double b){  
  3.         return a+b;  
  4.     }  
  5. }  

public class Calculator {

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

}

2) MAVEN引入EASYTEST
 

Java代码  收藏代码 "收藏这段代码")

  1. <dependency>  
  2.     <groupId>org.easetech</groupId>  
  3.     <artifactId>easytest-core</artifactId>  
  4.     <version>1.4.0</version>  
  5. </dependency>  

<dependency>

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

</dependency>

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

4 CSV测试的:

  

Java代码  收藏代码 "收藏这段代码")

  1. @RunWith(DataDrivenTestRunner.class)  
  2. publicclass CSVLoaderExample extends DataDrivenTest {  
  3.     @Test@DataLoader(filePaths = "calculator.csv", loaderType = LoaderType.CSV)  
  4.     public String testAddFromCSV(@Param(name = "a") Double a,  
  5.                                  @Param(name = "b") Double b,  
  6.                                  @Param(name = "expected") Double expected) {  
  7.         Assert.assertEquals(expected, calculator.add(a, b), 0.1);  
  8.         return"success";  
  9.     }  
  10.     @Test@DataLoader(filePaths = "calculator2.csv")  
  11.     publicvoid testAdd(@Param(name = "a") Double a, @Param(name = "b")Double b, @Param(name = "expected")Double expected){  
  12.         Assert.assertEquals(expected, calculator.add(a,b),0.1);  
  13.     }  
  14. }  

@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也是一样:
  

Java代码  收藏代码 "收藏这段代码")

  1. @RunWith(DataDrivenTestRunner.class)  
  2. publicclass ExcelLoaderExample extends DataDrivenTest {  
  3.     @Test@DataLoader(filePaths = "calculator.xls", loaderType = LoaderType.EXCEL)  
  4.     publicvoid testAddFromExcel(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {  
  5.         Assert.assertEquals(expected, calculator.add(a, b), 0.1);  
  6.     }  
  7.     @Test@DataLoader(filePaths = {"calculator2.xls"})  
  8.     publicvoid testAdd(@Param(name = "a") Double a, @Param(name = "b")Double b, @Param(name = "expected")Double expected){  
  9.         Assert.assertEquals(expected, calculator.add(a,b),0.1);  
  10.     }  
  11. }  

@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 还有不错的报表功能,可以输出:
 

Java代码  收藏代码 "收藏这段代码")

  1. @RunWith(DataDrivenTestRunner.class)  
  2. @Report(outputLocation = "classpath:TestReports")  
  3. publicclass ClassPathExampleReport extends DataDrivenTest{  
  4.     @Test@DataLoader(filePaths = "calculator.xls")  
  5.     publicvoid testAddFromExcel(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {  
  6.         Assert.assertEquals(expected, calculator.add(a, b), 0.1);  
  7.     }  
  8.     @Test@DataLoader(filePaths = "calculator2.xls")  
  9.     publicvoid testAdd(@Param(name = "a") Double a, @Param(name = "b") Double b, @Param(name = "expected") Double expected) {  
  10.         Assert.assertEquals(expected, calculator.add(a, b), 0.1);  
  11.     }  
  12. }  

@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,


Original url: Access
Created at: 2019-11-08 16:29:23
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论