• JUnit单元测试



    最近有个软件测试的作业,顺便写一下博客记录一下

    1:JUnit下载安装

    在github上下载相对应的jar包

    JUnit下载
    在这里插入图片描述
    在idea中将jar包导入
    在这里插入图片描述
    在这里插入图片描述
    安装JUnit插件后重启
    在这里插入图片描述创建JUnit测试
    在类名上按住alt+insert,点击Junit Test
    在这里插入图片描述

    2:JUnit有关注解

    注解作用
    @Test这个注解说明依附在 JUnit 的 public void 方法可以作为一个测试案例。
    @Before有些测试在运行前需要创造几个相似的对象。在 public void 方法加该注解是因为该方法需要在 test 方法前运行。
    @BeforeClass在 public void 方法加该注解是因为该方法需要在类中所有方法前运行。
    @AfterClass它将会使方法在所有测试结束后执行。这个可以用来进行清理活动。
    @Ignore这个注解是用来忽略有关不需要执行的测试的。

    3:JUnit的使用

    1:测试实际值是否符合期望值

    在这里插入图片描述
    除了Assert.assertEquals()方法外,Assert还有许多其他方法常用于单元测试

    方法名功能
    assertNull(java.lang.Object object)检查对象是否为空
    assertNotNull(java.lang.Object object)检查对象是否不为空
    assertEquals(long expected, long actual)检查long类型的值是否相等
    assertEquals(double expected, double actual, double delta)检查指定精度的double值是否相等
    assertFalse(boolean condition)检查条件是否为假
    assertTrue(boolean condition)检查条件是否为真
    assertSame(java.lang.Object expected检查两个对象引用是否引用同一对象(即对象是否相等)
    assertNotSame(java.lang.Object unexpected, java.lang.Object actual)检查两个对象引用是否不引用统一对象(即对象不等)

    2:JUnit的before与after注解

    @Before
    在某一个方法中,加入了@Before注解之后,那么这个方法中的功能会在测试方法执行前先执行,一般会在@Before修饰的方法中加入一些申请资源的代码,比如:申请数据库,申请IO资源
    @After
    在某一个方法中,加入了@After注解之后,那么这个方法中的功能会在测试方法执行执行后执行,所以一般在@After修饰的方法中埃及如:释放资源的代码,,比如释放数据库资源,释放IO资源,释放网络资源。
    代码示例:

    在这里插入图片描述
    运行结果
    在这里插入图片描述

    3:@beforeClass与@afterClass的使用

    1:被声明为@beforeClass与@AfterClass的方法必须为public static void方法
    2:即使beforeClass异常,afterClass仍然执行
    3:@brforeClass和@AfterClass在整个程序运行中只执行一次,而@before与@after依赖于执行方法的次数

    	package test.JunitPac;  
    	  
    	import JunitPac.CalSum;  
    	import org.junit.*;  
    	/** 
    	 * CalSum Tester. 
    	 * 
    	 * @author  
    	 * @version 1.0 
    	 * @since 
    11,9, 2022
    */
    public class CalSumTest { @BeforeClass public static void BeforeClass1() throws Exception { System.out.println("在test进行之前"); } @Test public void testAdd1() throws Exception { int res = CalSum.add(4, 5); Assert.assertEquals(res, 9); System.out.println("执行函数2"); } @Test public void testAdd2() throws Exception { int res = CalSum.add(5, 9); Assert.assertEquals(res, 14); System.out.println("执行函数2"); } @AfterClass public static void AfterClass() throws Exception { } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    运行截图:
    在这里插入图片描述

    4:异常测试

    使用try catch环绕

    	public class CalSum {  
    	    
    	    public static void count(int num) throws IllegalAccessException {  
    	  
    	        if (num < 0) {  
    	            throw new IllegalAccessException("valid num");  
    	  
    	        }  
    	    }  
    	}  
    	  
    	  
    	public class CalSumTest {  
    	  
    	  
    	    @Test  
    	    public void testException() throws Exception {  
    	        try {  
    	            CalSum.count(-1);  
    	        } catch (IllegalAccessException e) {  
    	  
    	  
    	        }  
    	  
    	    }  
    	  
    	}  
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    运行截图
    在这里插入图片描述
    在Test中加入expected

    	public class CalSum {  
    	    
    	    public static void count(int num) throws IllegalAccessException {  
    	  
    	        if (num < 0) {  
    	            throw new IllegalAccessException("valid num");  
    	  
    	        }  
    	    }  
    	}  
    	  
    	  
    	public class CalSumTest {  
    	  
    	  
    	    @Test(expected =  IllegalAccessException.class)  
    	    public void testException() throws Exception {  
    	  
    	        CalSum.count(-1);  
    	  
    	  
    	    }  
    	  
    	}  
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    运行截图
    在这里插入图片描述

    5:超时测试

    Junit 提供了一个暂停的方便选项。如果一个测试用例比起指定的毫秒数花费了更多的时间,那么 Junit 将自动将它标记为失败。timeout 参数和 @Test 注释一起使用。

    	public class CalSum {  
    	     
    	    public static void TimeOut(){  
    	  
    	        while(true) {  
    	  
    	        }  
    	  
    	    }  
    	}  
    	  
    	  
    	public class CalSumTest {  
    	  
    	    @Test(timeout = 1000)  
    	    public void testException() throws Exception {  
    	  
    	        CalSum.TimeOut();  
    	  
    	    }  
    	  
    	}  
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    运行截图:
    在这里插入图片描述

  • 相关阅读:
    自学JavaScript第二天- JS 进阶: 对象 函数
    SQL中的非重复计数(进阶)
    H.264编码及AAC编码基础
    [PAT-Advanced] A1054. The Dominant Color (20)
    Attentional Feature Fusion
    深度学习Day-14:RNN实现心脏病预测
    用于 syslog 收集的协议:TCP、UDP、RELP
    浅谈web性能测试
    产品经理必备知识——API接口
    vue cli 打包、生产环境http-proxy-middleware代理
  • 原文地址:https://blog.csdn.net/lllwky/article/details/127816419