import com.sun.deploy.config.DefaultConfig; import javax.security.auth.login.Configuration; import java.util.PropertyResourceBundle; import java.util.ResourceBundle; public class Test { } interface AccountManager{ Account findAccountForUser(String userId); void updateAccount(Account account); } class LogFactory{ public static Log getLog(Class cls){return null;} } class Account { } class Log { void debug(String string){}} //原版本的代码 class DefaultAccountManager implements AccountManager{ Log logger = LogFactory.getLog(AccountManager.class); public Account findAccountForUser(String userId) { logger.debug("hahahahahaha"); ResourceBundle bundle = PropertyResourceBundle.getBundle("test"); String sql = bundle.getString("test"); return null; } public void updateAccount(Account account) { } } //为测试进行重构的代码 class DefaultAccountManager1 implements AccountManager{ Log logger; private Configuration configuration; public DefaultAccountManager1() { this(LogFactory.getLog(DefaultAccountManager.class),new DefaultConfiguration()) } public DefaultAccountManager1(Log logger, Configuration configuration) { this.logger = logger; this.configuration = configuration; } public Account findAccountForUser(String userId) { logger.debug("hahahahahaha"); this.configuration.getSql("test"); return null; } public void updateAccount(Account account) { } } //测试时候的代码 class TestDefaultAccountManager{ public void testFindAccountByUser(){ MockLog logger = new MockLog(); MockConfiguration configuration = new MockConfiguration(); configuration.setSQl("testtesttest"); DefaultAccountManager am = new DefaultAccountManager(logger, configuration); Account account = am.findAccountForUser("1234"); } }
为使用mock方案测试,而重构代码的小小案例
猜你喜欢
转载自www.cnblogs.com/junjie2019/p/10623485.html
今日推荐
周排行