应用启动报 Can not load this fake sdk class 怎么解决?
解决方案1,引入pandoraboot环境。@RunWith(PandoraBootRunner.class)这样其实减慢了单测的运行速度,是违背了高效性原理的。但是相比较运行整个容器,运行pandora容器的时间大概在10s左右,还是能够容许的。那么有没有不让pandoraboot起来,纯mock的方法。我个人认为mock要比ut更优先 ,特别是有些外部依赖,经常迁移或者下线,可能改了1行代码,需要修1个小时测试用例。tair,lindorm等中间件也没有办法本地起环境进行mock,直接依赖外部资源非常不优雅。
解决方案2,直接mock
@RunWith(PowerMockRunner.class)@PrepareForTest({DataEntry.class})public class MockTair { @Mock private DataEntry dataEntry;
@Before public void hack() throws Exception { //solve it should be loaded by Pandora Container. Can not load this fake sdk class. please refer to http://gitlab.alibaba-inc.com/middleware-container/pandora-boot/wikis/faq for the solution PowerMockito.whenNew(DataEntry.class).withNoArguments().thenReturn(dataEntry); } @Test public void mock() throws Exception { String value = "value"; PowerMockito.when(dataEntry.getValue()).thenReturn(value); DataEntry tairEntry = new DataEntry(); //值相等 Assert.assertEquals(value.equals(tairEntry.getValue())); }}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。