日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

测试替身之类型

發(fā)布時(shí)間:2024/7/23 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试替身之类型 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測(cè)試樁Stub

樁:截?cái)嗟幕蚍浅6痰奈矬w。
測(cè)試樁,用最簡(jiǎn)單的可能實(shí)現(xiàn)代替Real。
基本實(shí)現(xiàn):所有方法僅一行,返回默認(rèn)值。

public class LoggerStub implements Logger {public void log(LogLevel level, String message) {// still a no-op}public LogLevel getLogLevel() {return LogLevel.WARN; // hard-coded return value} }

偽造對(duì)象Fake

Fake是Real的簡(jiǎn)化版本,但是沒(méi)有副作用。

public interface UserRepository {void save(User user);User findById(long id);User findByUsername(String username); }public class FakeUserRepository implements UserRepository {private Collection<User> users = new ArrayList<User>();public void save(User user) {if(findById(user.getId()) == null) {users.add(user);}}public User findById(long id) {for(User user : users) {if(user.getId() == id) {return user;}}return null;}public User findByUsername(String username) {for(User user : users) {if(user.getUsername().equals(username)) {return user;}}return null;} }

測(cè)試間諜Spy

Spy是一種測(cè)試替身,它用于記錄過(guò)去發(fā)生的情況,測(cè)試事后知道所發(fā)生的一切。

public class DLog {private final DLogTarget[] targets;public DLog(DLogTarget... targets) {this.targets = targets;}public void write(Level level, String message) {for(DLogTarget each : targets) {each.write(level, message);}} }public class DLogTest {@Testpublic void writesEachMessageToAllTargets() {SpyTarget spy1 = new SpyTarget();SpyTarget spy2 = new SpyTarget();DLog log = new DLog(spy1, spy2);log.write(Level.INFO, "Hello world.");assertTrue(spy1.received(Level.INFO, "Hello world."));assertTrue(spy2.received(Level.INFO, "Hello world."));} }// 使用SpyTarget跟蹤數(shù)據(jù) class SpyTarget implements DLogTarget {private List<String> log = new ArrayList<String>();public void write(Level level, String message) {log.add(concatenated(level, message));}public boolean received(Level level, String message) {return log.contains(concatenated(level, message));}private String concatenated(Level level, String message) {return level.getName() + ":" + message;} }

模擬對(duì)象Mock

Mock是特殊的Spy。它是一個(gè)在特定情景下可配置行為的對(duì)象。

總結(jié)

以上是生活随笔為你收集整理的测试替身之类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。