做网站电子版报价模板,荣耀手机官网,优设网官方网,东莞阳光网投诉查看目录 前言#xff1a;
1.什么是Junit
2.Junit相关的技术
2.1注解
2.1.1Test
2.1.2Disable
2.1.3BeforeAll和AfterAll
2.1.4BeforeEach和AfterEach
2.2参数化
2.2.1单参数
2.2.2多参数
2.2.2.1CSV获取参数
2.2.2.2方法获取参数
2.3测试套件
2.3.1通过class运行测…目录 前言
1.什么是Junit
2.Junit相关的技术
2.1注解
2.1.1Test
2.1.2Disable
2.1.3BeforeAll和AfterAll
2.1.4BeforeEach和AfterEach
2.2参数化
2.2.1单参数
2.2.2多参数
2.2.2.1CSV获取参数
2.2.2.2方法获取参数
2.3测试套件
2.3.1通过class运行测试用例
2.3.2通过包运行测试用例
2.4执行顺序
2.5断言
2.5.1断言相等
2.5.2断言不相等
2.5.3断言为空
2.5.4断言不为空
结束语 前言
在上一篇博客中小编主要与大家分享了该如何使用selenium来完成自动化测试那么还有一种是JunitJunit是单元测试的框架而Selenium是自动化测试的框架Selenium是拿着一个技术写自动化测试用例而Junit是拿着一个技术管理已经编写好的测试用例。所以两者之间还是有一定的差别的。接下来咱们就来谈谈Junit中相关的技术吧。
1.什么是Junit
Junit是针对Java的一个单元测试框架。
2.Junit相关的技术
2.1注解
在Junit注解主要有
TestDisableBeforeAllAfterAllBeforEachAfterEach
下面我们来给大家一一讲解演示一下。
2.1.1Test
在以前的代码中我们运行代码必须是通过主函数来进行运行的如下所示
代码展示
public class Test02 {public static void main(String[] args) {Test();}private static void Test() {System.out.println(这是一个Test方法);}
}结果展示 那么通过Test这样的一个注解我们就可以直接进行运行了Test表示当前这个方法是一个测试用我们通过代码来感受一下。
代码展示
package JunitTest;import org.junit.jupiter.api.Test;public class JunitTest01 {Testvoid Test01() {System.out.println(这是JunitTest里面的Test01);}
}这里我们就可以点击旁边的按钮来进行运行了。 注意点击①是运行整个程序的代码。点击②只是运行Test01这一块的代码。
结果展示 在上述中我们需要先去Maven中央仓库里导入依赖步骤入下所示
①打开Maven中央仓库点击搜索Junit。 ②找到对应的依赖点击复制。注由于我们这里讲解的是Junit5所以小编这里复制的是5.9.1里面的 ③将依赖粘贴到pom文件中。 ④点击刷新Maven。 2.1.2Disable
Disable表示直接忽视这块代码。
代码展示
package JunitTest;import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;public class JunitTest02 {Testvoid Test01() {System.out.println(这是JunitTest02里面的Test01);}Testvoid Test02() {System.out.println(这是JunitTest02里面的Test02);}DisabledTestvoid Test03() {System.out.println(这是JunitTest02里面的Test03);}
}如果没有该注释上面的代码执行结果应该是这样的。 但是如果有Disable这个注释的话Test03就会被忽视。 2.1.3BeforeAll和AfterAll
BeforeAll是指在所有的测试用例运行之前跑对应的方法。AfterAll是指在所有的测试用例运行之后跑对应的方法。
代码展示
package JunitTest;import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;public class JunitTest03 {Testvoid Test01() {System.out.println(这是JunitTest03里面的Test01);}Testvoid Test02() {System.out.println(这是JunitTest03里面的Test02);}Testvoid Test03() {System.out.println(这是JunitTest03里面的Test03);}BeforeAllstatic void SetUp() {System.out.println(这是BeforeAll里面的语句);}AfterAllstatic void TearDown() {System.out.println(这是AfterAll里面的语句);}
}结果展示
需要注意的是我们要方法前面加上static将他变成静态的也就是类方法。 2.1.4BeforeEach和AfterEach
BeforeEach在每一个测试用例之前跑对应的代码。AfterEach 在每一个测试用例之后跑对应的代码。
代码展示
package JunitTest;import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;public class JunitTest04 {Testvoid Test01() {System.out.println(这是JunitTest04里面的Test01);}Testvoid Test02() {System.out.println(这是JunitTest04里面的Test02);}Testvoid Test03() {System.out.println(这是JunitTest04里面的Test03);}BeforeEachvoid BeforeEachTest() {System.out.println(这是BeforeEach里面的语句);}AfterEachvoid AfterEachTest() {System.out.println(这是AfterEach里面的语句);}
}结果展示 2.2参数化
如果我们想要在方法中传入参数会出现什么情况呢如下所示。
代码展示
package JunitTest;import org.junit.jupiter.api.Test;public class JunitTest05 {Testvoid Test01(int i) {System.out.println(i);}
}结果展示 你会发现会报错原因是因为我们没有给注册一个参数。那么此时我们该怎么办呢这里就需要我们先在Maven里面导入一个依赖如下所示 将其复制到pom中并刷新。 此时我们就可以使用注解 ParameterizedTest了通过该注解我们就可以实现传递参数了具体的我们看下述操作。
2.2.1单参数
我们通过ValueSource就可以进行单参数的传递了。
代码展示
package JunitTest;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class JunitTest05 {ParameterizedTestValueSource(ints {1,2,3})void Test01(int num) {System.out.println(num);}ParameterizedTestValueSource(strings {1, 2, 3})void Test02(String number) {System.out.println(number);}
}结果展示 2.2.2多参数
2.2.2.1CSV获取参数
如果我们想要进行多参数的传递那又该怎么传递呢
可以通过 CsvSource来进行传递它既可以进行单参数的传递也可以进行多参数的传递。
单参数
代码展示
package JunitTest;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;public class JunitTest06 {ParameterizedTestCsvSource({1,2,3})void Test02(String num) {System.out.println(num);}}结果展示 多参数 代码展示
package JunitTest;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;public class JunitTest09 {ParameterizedTestCsvSource({1,2, 3,4})void Test01(String str, int num) {System.out.println(str : num);}
}结果展示 也可以通过 CsvFileSource来传递。
代码展示
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvFileSource;public class Test01 {ParameterizedTestCsvFileSource(resources test01.csv)void Test01(int num, String name) {System.out.println(num : name);}
}结果展示 注意在上述代码中我们是通过以下的方式来创建一个.csv文件的。 然后就在文件中进行填写数据即可。
2.2.2.2方法获取参数
除了上述的三种方式之外我们还可以通过MethodSource来传递参数。
代码展示
package JunitTest;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;import java.util.stream.Stream;public class JunitTest08 {public static StreamArguments Generator() {return Stream.of(Arguments.arguments(1,张三));}ParameterizedTestMethodSource(Generator)void Test01(String num, String name) {System.out.println(num : name);}
}结果展示 2.3测试套件
2.3.1通过class运行测试用例
这里我们先在java文件夹中新建两个.class类。 代码展示
代码① 代码②
import org.junit.jupiter.api.Test;public class Test04 {Testvoid Test04() {System.out.println(Test04);}
}代码③
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;Suite
//通过class测试用例运行
SelectClasses(value {Test03.class,Test04.class})
public class RunSuite {
}结果展示:
2.3.2通过包运行测试用例
在上述代码中我们是通过class来运行的这里我们来通过包来运行。
代码展示
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;Suite
//通过包来运行测试用例
SelectPackages({Test1,Test2})
public class RunSuite2 {
}结果展示 2.4执行顺序
我们先来看下面这个代码的执行顺序。
代码展示
package JunitTest;import org.junit.jupiter.api.Test;public class JunitTest11 {Testvoid A() {System.out.println(A);}Testvoid B() {System.out.println(B);}Testvoid C() {System.out.println(C);}Testvoid D() {System.out.println(D);}
}结果展示
如果我们现在换一下代码块之间的顺序结果会是什么呢
代码展示
package JunitTest;import org.junit.jupiter.api.Test;public class JunitTest11 {Testvoid D() {System.out.println(D);}Testvoid A() {System.out.println(A);}Testvoid C() {System.out.println(C);}Testvoid B() {System.out.println(B);}
}结果展示
你会发现即是是换了代码的顺序结果还是一样的没有变那么我们该怎么让代码的顺序变动呢
这里我们可以借助TestMethodOrderer来指定执行的顺序具体使用请看代码。
代码展示
package JunitTest;import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest11 {Order(1)Testvoid D() {System.out.println(D);}Order(2)Testvoid A() {System.out.println(A);}Order(3)Testvoid C() {System.out.println(C);}Order(4)Testvoid B() {System.out.println(B);}
}结果展示
通过上述的方法我们就可以让代码来按照我们指定的顺序来进行执行了。
2.5断言
如果我们需要对测试用例进行预期的判断判断我们的结果是不是和我们的预期相符那么此时我们就可以使用断言这样的操作来进行判断这里我们具体看下面的代码案例。
2.5.1断言相等
代码展示
package JunitTest;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class JunitTest12 {ParameterizedTestValueSource(ints {1})void Test01(int num) {System.out.println(num);//在这里判断我们接收到的参数是不是1Assertions.assertEquals(1,num);}
}结果展示 我们可以看到结果展示的是1那就说明我们的预期结果与实际结果是相符的。
2.5.2断言不相等
代码展示
package JunitTest;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class JunitTest13 {ParameterizedTestValueSource(ints {1})void Test01(int num) {System.out.println(num);//在这里判断接收到的参数是不是与预期的不相符也就是断言不相等Assertions.assertNotEquals(1,num);}
}结果展示 注意这里是预期的如果与实际的相符的话就会报错
2.5.3断言为空
断言为空就是判断接收到的值是不是空值。
代码展示
package JunitTest;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class JunitTest14 {ParameterizedTestValueSource(ints {1})void Test01(int num) {System.out.println(num);//判断断言是不是空值Assertions.assertNull(num);}
}结果展示
上述代码的结果表明接收到的值不为空。
2.5.4断言不为空
断言不为空就是判断如果断言是空的话就报错不为空才是正确的。
代码展示
package JunitTest;import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;public class JunitTest15 {Testvoid Test01() {String str 1;Assertions.assertNotNull(str);System.out.println(str);}
}结果展示 上述结果表明str不是空值。
结束语
希望这节对大家学习自动化测试有一定的帮助下节中小编将重点给大家介绍一下Junit里的一些操作想要学习的同学记得关注小编和小编一起学习吧如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津在此小编先谢过各位大佬啦