当前位置: 首页 > wzjs >正文

淮安设计网站淘宝客网站域名谁会做

淮安设计网站,淘宝客网站域名谁会做,设计平台建设,wordpress编辑主体一、背景 现在有A类,B类,C类,A类依赖B类,依赖C类,如果想要测试A类中的某个方法的业务逻辑。A类依赖其他类,则把其他类给mock,然后A类需要真实对象。这样就可以测试A类中的方法。 举例:Ticket类需要调用Flight类和Pas…

一、背景

现在有A类,B类,C类,A类依赖B类,依赖C类,如果想要测试A类中的某个方法的业务逻辑。A类依赖其他类,则把其他类给mock,然后A类需要真实对象。这样就可以测试A类中的方法。

举例:Ticket类需要调用Flight类和Passenger类,需要测试Ticket类中的saleByAge()方法。我们只需mock 一下Flight类和Passenger类 ,实例化对象 Ticket类,并按照Ticket类的构造方法Ticket()传参。这样我们即使没有Flight类和Passenger类的代码,也可以测试Ticket类的方法。

二、被测试类Ticket.java的代码

package fit5171.monash.edu;
public class Ticket
{private int ticket_id;private int price;Flight flight;private boolean classVip; //indicates if this is bussiness class ticket or notprivate boolean status; //indicates status of ticket: if it is bought by someone or notPassenger passenger;public Ticket(int ticket_id,int price, Flight flight, boolean classVip, Passenger passenger){this.ticket_id=ticket_id;this.price = price;this.flight = flight;this.classVip = classVip;this.status = false;this.passenger=passenger;}public Ticket() {}public int getTicket_id() {return ticket_id;}public void setTicket_id(int ticket_id) {this.ticket_id = ticket_id;}public int getPrice() { return price; }public void setPrice(int price){this.price = price;saleByAge(passenger.getAge()); //changes price of the ticket according to the age category of passengerserviceTax( ); //changes price by adding service tax to the ticket}public void saleByAge(int age){int price = getPrice();if(age < 15){price-=(int)price*0.5;//50% sale for children under 15this.price=price;} else if(age>=60){this.price=0; //100% sale for elder people}}public Flight getFlight() {return flight;}public void setFlight(Flight flight) {this.flight = flight;}public boolean getClassVip() {return classVip;}public void setClassVip(boolean classVip) {this.classVip = classVip;}public boolean ticketStatus(){return status;}public void setTicketStatus(boolean status){this.status = status;}public void serviceTax(){this.price *= 1.12;} //12% service taxpublic Passenger getPassenger() {return passenger;}public void setPassenger(Passenger passenger) {this.passenger = passenger;}public String toString(){return"Ticket{" +'\n'+"Price=" + getPrice() + "KZT, " + '\n' +getFlight() +'\n'+ "Vip status=" + getClassVip() + '\n' +getPassenger()+'\n'+ "Ticket was purchased=" + ticketStatus() + "\n}";}
}

三、测试Ticket类中的SaleByAge方法代码

package fit5171.monash.edu;import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;class SaleByAgeTest {private Ticket ticket;private Flight mockFlight;private Passenger mockPassenger;@BeforeEachvoid setUp() {mockFlight=mock(Flight.class);mockPassenger=mock(Passenger.class);ticket=new Ticket(1,100, mockFlight, false, mockPassenger);}@Testvoid testSaleByAgeForChildren() {//儿童半折when(mockPassenger.getAge()).thenReturn(10);ticket.saleByAge(mockPassenger.getAge());//调用方法assertEquals(50,ticket.getPrice());}@Testvoid testSaleByAgeForelder() {//老年人免费when(mockPassenger.getAge()).thenReturn(70);ticket.saleByAge(mockPassenger.getAge());//调用方法assertEquals(0,ticket.getPrice());}
}

四、运行结果如下

五、pom.xml配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>dycs</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!-- JUnit 5 API --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.10.0</version><scope>test</scope></dependency><!-- JUnit 5 引擎 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.10.0</version><scope>test</scope></dependency><!-- JUnit 平台引擎 --><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-engine</artifactId><version>1.10.0</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>4.8.0</version><scope>test</scope></dependency><dependency><groupId>org.powermock</groupId><artifactId>powermock-module-junit4</artifactId><version>2.0.9</version><scope>test</scope></dependency><dependency><groupId>org.powermock</groupId><artifactId>powermock-api-mockito2</artifactId><version>2.0.9</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-inline</artifactId><version>5.2.0</version><scope>test</scope></dependency></dependencies></project>

六、注意事项

mock是模拟对象,是空实现。如果要实现具体的业务逻辑的单元测试,必须创建真实对象,真实对象中涉及到类,可以mock。

使用when指定行为的值,如指定mock乘客的年龄为10.

@Testvoid testSaleByAgeForChildren() {//儿童半折when(mockPassenger.getAge()).thenReturn(10);ticket.saleByAge(mockPassenger.getAge());//调用方法assertEquals(50,ticket.getPrice());}

http://www.dtcms.com/wzjs/562925.html

相关文章:

  • 网站使用mip后效果怎么样php class 做网站
  • 网站转移空间手机网站跳转代码
  • 什么网站权重大wordpress 影视主题
  • 怎么在中国移动做网站备案wordpress更换登录账号
  • 江干区住房和城乡建设局网站jpress wordpress
  • 有哪些好用的设计网站有哪些内容wordpress全站301
  • 自适应网页模板建站h5页面制作图片
  • 搭建公司网站教程效果图外包
  • 怎么建立一个公司网站优质做网站费用
  • 2个女人做暧暧网站广州骏域网站建设专家手机电脑版
  • 推荐10个网站网站建设思维导图的要求
  • 做网站运营需要学什么条件杭州建筑市场信用网
  • 东莞企业营销型网站策划网站模板尺寸
  • 网站开发要用到什么网站开发最新书籍
  • 山东德铭工程建设公司网站免费网站下载直播软件大全
  • 怎么用ps制作个人网站模板下载新闻发稿平台有哪些
  • 上海网站设北京网站优化开户
  • net网站开发手机网站网页与网站的区别与联系是什么
  • thinkphp怎么做网站移动互联网数据源分析
  • 做家居网站撰写超越时空网上书城网站策划书
  • wamp环境下做网站怎么设计网站内容
  • 网站app免费下载软件大全满版型网站有哪些
  • 北海哪里做网站书店网站建设定位及目标
  • 深圳福田华丰大厦网站建设山西手机网站建设
  • 百度网站降级的原因网站添加谷歌地图
  • 国家建设部门三类人员官方网站链接买卖价格
  • 网站毕业设计选题合肥网站建设 合肥网络推广
  • 沾化网站建设建设部网站首页
  • 企业宣传网站建设需求说明书南庄顺德网站建设
  • 做网站的费用如何入帐中山外贸营销网站建设