zoukankan      html  css  js  c++  java
  • junit单元测试

    单元测试

    断言的使用

    assertEquals(String message, int expected, int actual)

    message:可选,如果提供的话,将会在发生错误的时候报告这个消息
    expected:是你的期望值,一般是硬编码的
    actual:是被测试代码实际产生的值
    

    assertNotNull(String message, Object object)

    assertNull(String message, Object object)

    验证一个对象是否为null(notNull),如果为null(notNull),则测试失败,message为可选
    

    assertSame(String message, Object expected, Object actual)

    验证一个expected参数和actual参数所应用的对象是否是同一个对象,如果不是,测试失败,message可选
    assertNotSame(String message, Object expected, Object actual)
    验证一个expected参数和actual参数所应用的对象是否不是同一个对象,如果是,测试失败,message可选	
    

    assertTrue(String message,boolean condition)

    验证表达式的值是不是为Ture,如果不为真,测试失败
    assertFalse(String message, boolean condition)
    样子表达式的值是不是false,如果不为false,测试失败,message可选
    

    Setup和TearDown

    Setup方法在测试方法执行前执行,一般用来申请系统资源,或者初始化类和数据使用
    TearDown方法在测试方法执行之后自信,一般用来释放系统资源
    

    测试异常

    假设我们测试sortList()方法,我们希望在测试为null的情况下,方法能够抛出正常的异常
    
    
    
    	public void testForException(){
    		
    		try{
    			sortList(null);
    			fail("should have thrown an exception");
    		
    		}catch(Exception e){
    			assertTure(ture);
    		}
    	} 
    

    测试应该遵循的原则--Right-BICEP

    	Right: 	结果是否**正确**
    	B:		是否所有的**边界**条件都是正确的
    	I:		能查一下**反向**关联吗
    	C:		能用其他手段**交叉检查**一下结果吗
    	E:		你是否可以强制**错误条件**发生
    	P:		能否满足**性能**要求
    

    Mock对象

    	在单元测试中,我们常遇到的问题是应用中其它的协同模块尚未开发完成,或者被测试模块需要和一些不容易构造、比较复杂的对象进行交
    	互另外,由于不能肯定其它模块的正确性,我们也无法确定测试中发现的问题是由哪个模块引起的。Mock 对象能够模拟其它协同模块的行
    	为,被测试模块通过与 Mock 对象协作,可以获得一个孤立的测试环境。此外,使用 Mock 对象还可以模拟在应用中不容易构造(如 
    	HttpServletRequest 必须在 Servlet 容器中才能构造出来)和比较复杂的对象(如 JDBC 中的 ResultSet 对象),从而使测试
    	顺利进行。
    	
    	使用servlet来举例
    	
    public class ResultServletTest {  
    
    private AwardResultServlet servlet;  
    private HttpServletRequest mockRequest;  
    private HttpServletResponse mockResponse;  
      
    @Before  
    public void setUp(){  
        servlet = new ResultServlet();  
          
        mockRequest = createMock(HttpServletRequest.class);         //加载  
        mockResponse = createMock(HttpServletResponse.class);  
    }  
      
    @After  
    public void tearDown(){  
        verify(mockRequest);        //验证  
        verify(mockResponse);  
    }  
      
      
    @Test  
    public void testDoPostHttpServletRequestHttpServletResponse() throws ServletException, IOException {  
          
        mockRequest.getParameter("id");         //传入参数  
        expectLastCall().andReturn("1");  
          
        mockRequest.getParameter("name");       //传入参数  
        expectLastCall().andReturn("chevy");  
          
        mockRequest.getParameter("gender");     //传入参数  
        expectLastCall().andReturn("男");  
          
        replay(mockRequest);                    //回放  
        replay(mockResponse);  
          
        servlet.doPost(mockRequest, mockResponse);  //调用  
                  
    }  
    
    }
  • 相关阅读:
    hadoop 之 kafka 安装与 flume -> kafka 整合
    软考倒计时28天:项目一般管理
    HACMP5.4常用命令
    db2还原离线备份文件报错SQL2071N 提示“访问共享库出现错误”解决
    远程桌面不能拷贝文件的问题
    ubuntu设置开机启动命令行模式
    Rainmeter如何打开控制面板的小程序
    /var/adm/wtmp文件太大该怎么办?
    SQL1221N The Application Support Layer heap cannot be allocated. SQLSTATE=57011
    DB21019E An error occurred while accessing the directory "/root".
  • 原文地址:https://www.cnblogs.com/j2eeDevelper/p/5320400.html
Copyright © 2011-2022 走看看