中国建设银行官方网站k宝驱动下载,外贸网站模板外贸网站建设,wordpress 主页排序,牛商网络一、简介 Junit框架是一个开源的Java语言单元测试框架#xff0c;Java方向使用最广泛的单元测试框架#xff0c;使用Java开发者都应该学习Junit并能掌握单元测试的编写。 对于Junit和Selenium的关系#xff1a;通俗点来说Selenium如果比喻为灯泡#xff0c;那么Junit就是电…一、简介 Junit框架是一个开源的Java语言单元测试框架Java方向使用最广泛的单元测试框架使用Java开发者都应该学习Junit并能掌握单元测试的编写。 对于Junit和Selenium的关系通俗点来说Selenium如果比喻为灯泡那么Junit就是电源。 二、常见使用方法
注解 在Junit框架中使用注解可以实现单元测试。 Test 在方法前加上Test注解就不用编写main方法是直接可以运行该方法的。 Test
public void test01(){System.out.println(简单测试);
}
BeforeEach 在方法前加上BeforeEach表示在每执行一个测试方法之前都要执行该方法一次。 Testpublic void test01(){System.out.println(简单测试);}Testpublic void test02(){System.out.println(简单测试2);}BeforeEachpublic void test00(){System.out.println(测试);} BeforeAll 在方法前加上BeforeEach表示在每执行测试之前都会执行该测试方法但只执行一次该方法必须用static修饰。 org.junit.jupiter.api.Testpublic void test01(){System.out.println(简单测试);}org.junit.jupiter.api.Testpublic void test02(){System.out.println(简单测试2);}BeforeAllpublic static void test00(){System.out.println(测试);} AfterEach表示在每执行一个测试方法之前都要执行该方法一次。 AfterAll表示在执行测试之后执行该方法一次也要求是静态方法。 这两种注解与BeforeEach和BeforeAll用法相似便不再进行演示。 断言
assertEquals和assertNotEquals assertEquals比较要测试的是否与预期的一致。 assertNotEquals比较要测试的是否与预期的不一致。 ChromeDriver driver new ChromeDriver();org.junit.jupiter.api.Testpublic void assertTest(){driver.get(https://www.baidu.com);String str driver.findElement(By.xpath(//*[id\su\])).getAttribute(value);Assertions.assertEquals(百度一下,str);}assertTrue和assertFalse 参数为布尔表达式用于判断真假。 assertTrue参数中布尔表达式为真时测试通过。 assertFalse参数中布尔表达式为假时测试通过。 org.junit.jupiter.api.Testpublic void assertTest(){driver.get(https://www.baidu.com);String str driver.findElement(By.xpath(//*[id\su\])).getAttribute(value);Assertions.assertTrue(百度一下.equals(str));}
assertNull 和assertNotNull assertNull 和assertNotNull这两个方法来判断参数是否为空。 org.junit.jupiter.api.Testpublic void assertTest(){driver.get(https://www.baidu.com);String str driver.findElement(By.xpath(//*[id\su\])).getAttribute(value);Assertions.assertNotNull(str);driver.quit();}
测试用例的执行顺序 Junit的默认的执行顺序是不确定的官方的用例并没有明确指出如果测试之间有关联这就需要使用Junit提供的方法来手动设置测试用例的执行顺序在类前加上TestMethodOrder注解标注当前类使用方法进行排序在类中的方法前使用order注解注明顺序。 但是在编写测试用例时尽量保持其独立性。 TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class Test {org.junit.jupiter.api.TestOrder(1)public void test1(){System.out.println(测试1);}org.junit.jupiter.api.TestOrder(2)public void test2(){System.out.println(测试2);}org.junit.jupiter.api.TestOrder(3)public void test3(){System.out.println(测试3);}
}测试套件 测试套件Suite可以将指定文件添加到套件执行。可以使用SelectClasses()注解以及SelectPackages()注解。 Suite
SelectClasses(Test.class)
public class AutoTest {
}
参数化 在测试方法中可以添加参数进行测试使用Parameterizedtest来标注方法类型为参数化并且不需要再添加Test注解否则就会再多执行一次。 单参数 使用ValueSource(类型{参数1参数2……}在指明类型时需要使用原生类型在基本数据类型之后加上s例如ints、floats。 ParameterizedTestValueSource(ints {1,23,0,9})public void test1(int a){System.out.println(a);} 多参数 使用CSVSource(Value{小明,98,张三100,……} 多参数之间默认使用如果修改需要使用delimeterString指定分隔字符。 ParameterizedTestCsvSource(value {小明-100,刘洋-99},delimiterString -)public void test2(String name,int score){System.out.println(姓名name 成绩score);} 当参数过多的话就可以使用文件进行处理使用CSVFileSource注解 ParameterizedTestCsvFileSource (files D:\\test.txt)public void test2(String name,int score){System.out.println(姓名name 成绩score);} 动态参数
单参数 使用MethodSource进行注解参数为数据来源的方法名如果不指定参数就默认找跟用例同名的静态方法。 ParameterizedTestMethodSource(dataSource)public void test0(String str){System.out.println(str);}public static SetString dataSource(){SetString set new HashSet();set.add(小明,90);set.add(张强,98);set.add(王志,100);return set;} 多参数
ParameterizedTestMethodSource(dataSource)public void test0(String name,int score){System.out.println(name:score);}public static StreamArguments dataSource(){return Stream.of(Arguments.arguments(jim,90),Arguments.arguments(lucy,99));}