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);  //调用  
              
}  

}

转载于:https://www.cnblogs.com/j2eeDevelper/p/5320400.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值