Drinking Mockito with A Simple Stock Broker Simulation Program

2023-10-19 11:28

本文主要是介绍Drinking Mockito with A Simple Stock Broker Simulation Program,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第三方库

junit-4.13.2

mockito-core-3.12.4

hamcrest-all-1.3

objenesis-1.2

byte-buddy-1.12.10

byte-buddy-agent-1.12.10

项目目录结构

src每个类的代码

Stock

package com.yaya.mockito;import java.math.BigDecimal;public class Stock {private String symbol;private String name;private BigDecimal price;public Stock(String symbol, String name, BigDecimal price){this.symbol = symbol;this.name = name;this.price = price;}public String getSymbol(){return symbol;}public BigDecimal getPrice(){return price;}
}

MarketWatcher

package com.yaya.junit;import com.yaya.mockito.Stock;public interface MarketWatcher {public Stock getQuote(String symbol);
}

Portfolio

package com.yaya.junit;import com.yaya.mockito.Stock;import java.math.BigDecimal;
import java.util.Map;public class Portfolio {private Map<String,String> stockMap;public void buy(Stock stock){}public BigDecimal getAvgPrice(Stock stock){return new BigDecimal("10.0");}public void sell(Stock stock,int shares){}}

StockBroker

package com.yaya.junit;import com.yaya.mockito.Stock;import java.math.BigDecimal;public class StockBroker {private final static BigDecimal LIMIT = new BigDecimal("0.10");private final MarketWatcher market;public StockBroker(MarketWatcher market) {this.market = market;}public void perform(Portfolio portfolio, Stock stock){Stock liveStock = market.getQuote(stock.getSymbol());BigDecimal avgPrice = portfolio.getAvgPrice(stock);BigDecimal priceGained = liveStock.getPrice().subtract(avgPrice);BigDecimal percentGained = priceGained.divide(avgPrice);if(percentGained.compareTo(LIMIT)>0){portfolio.sell(stock,10);}else if(percentGained.compareTo(LIMIT)<0){portfolio.buy(stock);}}
}

test类代码

StockBrokerTest

package com.yaya.junit;import com.yaya.mockito.Stock;
import org.junit.Before;
import org.junit.Test;import java.math.BigDecimal;import static org.junit.Assert.assertNotNull;import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.*;public class StockBrokerTest {MarketWatcher marketWatcher = mock(MarketWatcher.class);Portfolio portfolio = mock(Portfolio.class);StockBroker stockBroker;@Beforepublic void setUp(){stockBroker = new StockBroker(marketWatcher);}@Testpublic void when_ten_percent_gain_then_the_stock_is_sold(){when(portfolio.getAvgPrice(isA(Stock.class))).thenReturn(new BigDecimal("10.00"));Stock myCorp = new Stock("YaYa","YaYa Corporation",new BigDecimal("11.20"));when(marketWatcher.getQuote(anyString())).thenReturn(myCorp);stockBroker.perform(portfolio,myCorp);verify(portfolio).sell(myCorp,10);}}

运行结果

这篇关于Drinking Mockito with A Simple Stock Broker Simulation Program的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239450

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

Oracle ADG Broker主备切换报错失败处理

Oracle ADG Broker主备切换报错失败处理 问题症状解决办法 ⭐️ Oracle数据库版本为19.18。 问题症状 通过DG Broker发起主备切换: DGMGRL> show configurationConfiguration - dg_msgdbProtection Mode: MaxPerformanceMembers:msgdb_1 - Prim

MQTT broker搭建并用SSL加密

系统为centos,基于emqx搭建broker,流程参考官方。 安装好后,用ssl加密。 进入/etc/emqx/certs,可以看到 分别为 cacert.pem CA 文件cert.pem 服务端证书key.pem 服务端keyclient-cert.pem 客户端证书client-key.pem 客户端key 编辑emqx配置:vim /etc/emqx/emqx.conf,添加s

启动读取program arguments参数

1,有时我们在启动项目的时候配置了program arguments但是却读取不到,这时用下面的方式启动则可以,我把所有的相关代码都放在了下面,如果觉得没有用的大家可在自己的项目中删除,只是项目启动的时候有点变化 启动主方法 @MapperScan({ "com.kidy.mapper" }) @SpringBootApplication public class RunApplication

使用django-simple-captcha遇到的坑

使用django-simple-captcha遇到的坑 一站点gongshare.com在做注册功能时验证码采用的django-simple-captcha,因为笔者开发环境采用的Windows 64bit系统,结果安装使用的时候接二连三遇到好几个坑。 django-simple-captcha需要依赖django1.3+、PIL1.1.7+或者Pillow2.0+,根据文档安装后开始使用时,

HYPERCASUAL - Simple Characters(卡通游戏火柴人物模型)

介绍HyperCasual - 简单角色! 一套低多边形角色资源,用于创建超休闲风格的游戏。 包含演示场景 角色(x10) 生化人、小丑、Flaty_Boss、女孩、守门员、英雄、亚马逊女战士、男人、红衣男人、修理工 每个网格大约有700-2000个顶点 角色设置与Mecanim兼容(本包中不包含动画) 着色器适用于可编写脚本的渲染管线(HD + LW) 下载:​​Unity资源商店链接资源

[LeetCode] 901. Online Stock Span

题:https://leetcode.com/problems/online-stock-span/ 题目大意 不断给出元素,求当前元素开始往前的最大子串,且串中每个元素的值都小于等于 该元素。 思路 class stockPair{int price;int day;public stockPair(int price,int day){this.price = price;this.d

【HDU】4975 A simple Gaussian elimination problem. 网络流——行列建边

传送门:【HDU】4975 A simple Gaussian elimination problem. 题目分析:这题和某一场的多校的题目出奇的像啊!重要的是我一开始还以为不可能会出一样的题。。结果迟迟没写啊。。。后来觉得实在想不出什么对策了,虽然觉得给的是0~9很特殊,但是利用不起来,果断还是敲了网络流了。。首先建图很简单,源点向行建边,容量为行和,列向汇点建边,容量为列和,然后所有的

解决git error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denie

昨天电脑中毒重装了系统,安装了 git 之后  设置了账户 ,邮箱 在 git clone 的时候报错, 界面如下: 然后重新用户,邮箱, 出现了这个问题,百度了很久也没解决,今天早上想着这个英文的意思 好像是权限不够,然后 我就去提示的这个文件夹下面 给了全部的权限,本人是window10 系统  给的是everyone 所有 之后在  git config --syste

Splay树(区间更新)—— POJ 3468 A Simple Problem with Integers

对应POJ 题目:点击打开链接 A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072KTotal Submissions: 72765 Accepted: 22465Case Time Limit: 2000MS Description You have N integers, A1