当前位置: 首页 > 其他范文 > 其他范文

实验报告3

作者:抄贰黯历 | 发布时间:2020-12-16 12:29:48 收藏本文 下载本文

实验报告 实验名 称: : ********************** 专 业:

*************** 班 级:

***** 姓 名:

****** 学 号:

*********** 指导老师:

****** 2014年*月*日 1

一、实验目的 1)理解单元测试阶段Mock Object的用法; 2)掌握使用 Eclipse+JUnit+EclEmma+EasyMock 进行基本路径覆盖测试的方法。

二、实验工具 Eclipse、JUnit、eclemma 和EasyMock 三、实验内容 四、实验代码(1)AccountInfo package atm;2

public class AccountInfo { private String cardNo;private String password;private int balance;public AccountInfo(String c, String p, int b){ cardNo=c;password=p;balance=b;} public String getCardNo(){ return cardNo;} public void setCardNo(String cardNo){ this.cardNo = cardNo;} public String getPassword(){ return password;} public void setPassword(String password){ this.password = password;} public int getBalance(){ return balance;} public void setBalance(int balance){ this.balance = balance;} }(2))类 ATMService package atm;public class ATMService { private IDataConnection dconn;public ATMService(IDataConnection dc){ dconn=dc;} //取款操作 public void withdraw(String cardNo,int amount){ AccountInfo a=dconn.getAccount(cardNo);int balance=a.getBalance()-amount;a.setBalance(balance);dconn.updateAccount(a);} //存款操作 3

public void deposit(String cardNo,int amount){ AccountInfo a=dconn.getAccount(cardNo);int balance=a.getBalance()+amount;a.setBalance(balance);dconn.updateAccount(a);} //转账操作 public void transfer(String fromCardNo,String toCardNo,int amount){ AccountInfo a=dconn.getAccount(fromCardNo);AccountInfo b=dconn.getAccount(toCardNo);int aBalance=a.getBalance()-amount;int bBalance=b.getBalance()+amount;a.setBalance(aBalance);b.setBalance(bBalance);dconn.updateAccount(a);dconn.updateAccount(b);} //查询操作 public int inquiry(String cardNo){ AccountInfo a=dconn.getAccount(cardNo);return a.getBalance();} }(3 3)接口 IdataC onnecrion package atm;public interface IDataConnection { public AccountInfo getAccount(String id);public void updateAccount(AccountInfo account);public void addAccount(AccountInfo account);}(4)MockDataConnection package atm;import java.util.HashMap;public class MockDataConnection implements IDataConnection { private HashMap mdb;public MockDataConnection(){ mdb = new HashMap();AccountInfo a = new AccountInfo("1","111111",300);AccountInfo b = new AccountInfo("2","222222",1000);mdb.put(a.getCardNo(), a);4

mdb.put(b.getCardNo(), b);} @Override public AccountInfo getAccount(String id){ // TODO Auto-generated method stub return mdb.get(id);} @Override public void updateAccount(AccountInfo account){ // TODO Auto-generated method stub addAccount(account);} @Override public void addAccount(AccountInfo account){ // TODO Auto-generated method stub mdb.put(account.getCardNo(), account);} }(5)TestATMService单 单 元测试用例 package atm;import static org.junit.Assert.*;import org.junit.Test;public class TestATMService { private IDataConnection mdc = new MockDataConnection();private ATMService atm = new ATMService(mdc);@Test public void testWithdraw(){ atm.withdraw("1", 20);AccountInfo a = mdc.getAccount("1");assertEquals(280,a.getBalance());} @Test public void testDeposit(){ atm.deposit("1",20);AccountInfo a = mdc.getAccount("1");assertEquals(320,a.getBalance());} @Test public void testTransfer(){ atm.transfer("2", "1", 200);AccountInfo a = mdc.getAccount("1");AccountInfo b = mdc.getAccount("2");assertEquals(500,a.getBalance());5

assertEquals(800,b.getBalance());} @Test public void testInquiry(){ assertEquals(1000,atm.inquiry("2"));} } 五、实验结果 分析:红色代表未执行、黄色代表条件没有全部执行、绿色代表执行过了:

测试用例执行情况:

测试用例的覆盖情况:

(6)TestATMServiceWithEMock 单元测试用例 package atm;import static org.easymock.EasyMock.*;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;public class TestATMServiceWithEMock { private ATMService atm;private IDataConnection mock;@Before public void setUp(){ mock = createMock(IDataConnection.class);atm = new ATMService(mock);} @Test public void testTransfer(){ AccountInfo a = new AccountInfo("1","111111",500);AccountInfo b = new AccountInfo("2","222222",1000);7

//设置期望值expect(mock.getAccount("1")).andReturn(a);expect(mock.getAccount("2")).andReturn(b);mock.updateAccount(a);mock.updateAccount(b);replay(mock);//回放 //执行被测方法atm.transfer("2", "1", 150);//验证执行被测方法后的状态assertEquals(650,a.getBalance());assertEquals(850,b.getBalance());verify(mock);} } 测试用例执行情况:

实验报告模板

J2EE实验报告

实验报告模版

实验报告四

《网络技术》,实验报告

本文标题: 实验报告3
链接地址:https://www.dawendou.com/fanwen/qitafanwen/315115.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《实验报告3》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有