• JAVA之单元测试:Junit框架


    •  单元测试:

    单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性

    • 目前测试方法是怎么进行的,存在什么问题?

    1、只有一个main方法,如果一个方法的测试失败了,其他方法测试会受到影响

    2、无法得到测试的结果报告,需要程序员自己去观察测试是否成功

    3、无法实现自动化测试

    • Junit单元测试框架

    1、Junit是使用Java语言实现的单元测试框架,它是开源的,Java开发者都应当学习并使用Junit编写单元测试

    2、此外,几乎所有的IDE工具都集成了Junit,这样我们就可以直接在IDE中编写并运行Junit测试,Junit目前最新版本是5

    • Junit优点

    1、Junit可以灵活的选择执行哪些测试方法,可以一键执行全部测试方法

    2、Junit可以生成全部方法的测试报告

    3、Junit可以生成测试报告,如果测试良好则是绿色,如果测试失败则是红色

    4、单元测试中的某个方法测试失败了,不会影响其他测试方法的测试

    • Junit单元测试是做什么的?

    测试类中的方法的正确性的

    单元测试快速入门 :

    需求:使用单元测试进行业务方法预期结果、正确性测试的快速入门

    分析:

    1、将Junit的jar包导入到项目中

    IDEA通常整合好了Junit框架,一般不需要导入

    如果IDEA没有整合好,需要自己手工导入两个Junit的jar包到模块

    2、编写测试方法:该测试方法必须是公共的无参数无返回值的非静态方法

    3、在测试方法上使用@Test注解:标注该方法是一个测试方法

    4、在测试方法中完成被测试方法的预期正确性测试

    5、选中测试方法,选择Junit运行,如果测试良好则是绿色,如果测试失败,则是红色

     业务类:

    1. //业务方法
    2. public class 单元测试_Junit框架 {
    3. public String loginName(String loginName,String passWord){
    4. if("YAn".equals(loginName)&&"123456".equals(passWord)){
    5. return "登录成功";
    6. }else{
    7. return "登录失败,密码或者用户名错误";
    8. }
    9. }
    10. public void selectName(){
    11. //这里我们故意写一个bug,方便测试
    12. System.out.println(10/0);
    13. System.out.println("查询成功!");
    14. }
    15. }

     测试方法:

    1. import org.junit.Assert;
    2. import org.junit.Test;
    3. //测试方法
    4. public class 单元测试_Junit框架text {
    5. /*
    6. 测试方法注意点:
    7. 1、必须是公开的、无参、无返回值的方法
    8. 2、测试方法必须使用@Test注解标记
    9. */
    10. @Test
    11. public void test(){
    12. 单元测试_Junit框架 t=new 单元测试_Junit框架();
    13. String ts=t.loginName("YAn","123456");
    14. //进行预期结果的正确性测试:断言
    15. Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
    16. }
    17. @Test
    18. public void selectName(){
    19. 单元测试_Junit框架 ts=new 单元测试_Junit框架();
    20. ts.selectName();
    21. }
    22. }

     两个测试方法运行后结果:

     如果您的项目被人动了,和你的预期结果不一样,则是这样的:

     单元测试常用注解(博主这里用的是版本4):

     业务类修改一点点,让测试方法都没有bug

    1. //业务方法
    2. public class 单元测试_Junit框架 {
    3. public String loginName(String loginName,String passWord){
    4. if("YAn".equals(loginName)&&"123456".equals(passWord)){
    5. return "登录成功";
    6. }else{
    7. return "登录失败,密码或者用户名错误";
    8. }
    9. }
    10. public void selectName(){
    11. System.out.println(10/2);
    12. System.out.println("查询成功!");
    13. }
    14. }

     测试方法:

    1. import org.junit.*;
    2. //测试方法
    3. public class 单元测试_Junit框架text {
    4. //修饰实例方法的
    5. @Before
    6. public void Before(){
    7. System.out.println("Before方法运行");
    8. }
    9. @After
    10. public void After(){
    11. System.out.println("After方法运行");
    12. }
    13. //修饰静态方法的
    14. @BeforeClass
    15. public static void BeforeClass(){
    16. System.out.println("BeforeClass方法运行");
    17. }
    18. @AfterClass
    19. public static void AfterClass(){
    20. System.out.println("AfterClass方法运行");
    21. }
    22. /*
    23. 测试方法注意点:
    24. 1、必须是公开的、无参、无返回值的方法
    25. 2、测试方法必须使用@Test注解标记
    26. */
    27. @Test
    28. public void test(){
    29. 单元测试_Junit框架 t=new 单元测试_Junit框架();
    30. String ts=t.loginName("YAn","123456");
    31. //进行预期结果的正确性测试:断言
    32. Assert.assertEquals("您的业务功能可能出现了问题","登录成功",ts);
    33. }
    34. @Test
    35. public void selectName(){
    36. 单元测试_Junit框架 ts=new 单元测试_Junit框架();
    37. ts.selectName();
    38. }
    39. }

     运行结果:

    可以看出最先运行的是BeforeClass测试方法,最后结束的是AfterClass测试方法。

    先执行Before方法,然后运行里面的测试内容,再运行After方法。

    开始执行的方法:初始化资源

    执行完之后的方法:释放资源

     

  • 相关阅读:
    初识数据库Mysql
    Python技法:实用运维脚本编写(进程/文件/目录操作)
    yaml 知识点记录
    IntelliJ IDEA 常用操作和快捷键
    Mysql -- 表的约束
    万字详解数据仓库、数据湖、数据中台和湖仓一体
    联想中国上半财年业绩:转型深入 方案服务同比增24%
    python提高运算速度的方法:内存缓存+磁盘缓存
    【C++】命名空间深度理解
    Linux 守护进程
  • 原文地址:https://blog.csdn.net/qq_62731133/article/details/124973214