导航:首页 > 方法技巧 > 私有方法如何测试

私有方法如何测试

发布时间:2023-05-12 12:31:07

如何嘲笑私有方法使用PowerMock测试

1、用下面的的Mockito的API,我成功地做到这一点:public class CodeWithPrivateMethod {

public void meaningfulPublicApi() {
if (doTheGamble("Whatever", 1 << 3)) {
throw new RuntimeException("boom");
}
}

private boolean doTheGamble(String whatever, int binary) {
Random random = new Random(System.nanoTime());
boolean gamble = random.nextBoolean();
return gamble;
}
}

而这里的JUnit测试:import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.moles.junit4.PowerMockRunner;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;

@RunWith(PowerMockRunner.class)
@PrepareForTest(CodeWithPrivateMethod.class)
public class CodeWithPrivateMethodTest {

@Test(expected = RuntimeException.class)
public void when_gambling_is_true_then_always_explode() throws Exception {
CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());

when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class))
.withArguments(anyString(), anyInt())
.thenReturn(true);

spy.meaningfulPublicApi();
}
}

2. 这将与任何测试的一个通用的解决方案是创建你自己的哗握模拟。 更改您要保护的。 在你的测试类扩展类 覆盖到返回的任何常量想要 这没有按'任意所以它不是优雅,但它会一直工作,即使没有PowerMock。另外,您的Mockito来为你做的步骤#2&#3,如果你已经做了第一步了。要直接嘲笑一个,你将需要PowerMock如图对方森颂的回答。

3. 实际它是此芦郑扔是不是从它的我觉得还是你的测试并不如预期。

⑵ 如何给一个私有方法做单元测试

1. 是不是需要对一个方法(无论是public或是private)取决于这个函数的复杂度和价值,并不是所有的function都要测试的,除非需要追求很高的测试覆盖率。这样的话是否需要对一个private方法进行测试就看这个private方法是不是比较重要、复杂、容易出错,其实这个原则也适用于Public的方法,你总不会去测试Java的setter和getter吧。
2. 很多时候private的方法的测试时可以通过对public方法的测试间接来达到的。一个设计良好的、充分运用TDD的工程完全可以通过对public方法提供完整派孙慧的用例就可以覆盖private方法。
3. 仅仅为了能够进行单元测试,而采用将private方法改成public方法通常是不合适的,这样会暴露出不该暴露的实现细节,另外接口过多也破坏了SRP(单一职责原则)。
4. 当你非常渴望测试一个private方法的时候,可以仔细评估这个private方法和目前所在类的关系,这样的private方法是不是应该迁移到另尘答一个类中,在另一个类中作为public提供接口给调用方(我通常这么干)。
5. 最后一个测试private的途径就是利用语言提供的反射功能,在testcase中将private方法修改成public的,以凯敏此来实现对private方法的测试。

⑶ 使用Powermock对私有方法进行mock

 团誉宏 在public方法中往往会调用一些private方法,如果private方法很复杂,我们就需要处理很多方法的mock。如果这时只想要测试public方法,并不想关注private方法的逻辑,那么就需要虚历对private方法进行mock。下面我们简单介绍下如何通过Powermock来对私有方法进行mock。

被测试类:

  此类中包含一个public方法mockPrivateFunc,里面调用了private方法privateFunc。当前我们想要测试该public方法,并且不想进入private方法执行,那么就需要对该塌册私有方法进行模拟。

测试类:

  1、由于是对本类的私有方法进行模拟,所以需要在PrepareForTest后面加上MockPrivateClass,同时需要使用spy来模拟一个对象。
  2、 使用下面方式来模拟私有方法:

  如果私有方法存在参数,则同样的需要在私有方法名后面带上同样个数及类型的参数,其方法原型为:

  3、使用verifyPrivate来验证私有方法被调用,其例如下:

  verifyPrivate的参数为mock的对象,及验证模式(可选),invoke参数为要验证的私有方法名称及相应参数。

⑷ IOS 单元测试怎么测试私有方法

直接呼叫就好了你还是可以呼叫,只是编译器会给你警告

⑸ junit有什么方法可以测试私有方法

有一个invoke方法可以

⑹ JUnit test 如何做Java静态方法测试

使用junit测试Java静态私有方法,通过以下案例进行分析:

测试目标类如下:

packagecn.outofmemory.junit;
publicclassTestTarget{
/**
*移除正则表达式中需要转义的字符
*@paramwword
*@return移除正则表达式中需要转义的字符
*@authorAdministrator
*@date2015-7-11
*/
(Stringw){
if(w==null){
returnnull;
}
String[]convertedChars={"\",".","+","*","(",")","{","}","[","]","?","/","^","$","|"};
for(Stringc:convertedChars){
w=w.replace(c,"\"+c);
}
returnw;
}
}

测试方法:

@Test
publicvoidtestConvert4Regex()throwsException{
Stringinput="A+";
Stringexpected="A\+";
MethodtargetMethod=TestTarget.class.getDeclaredMethod("convert4Regex",String.class);
targetMethod.setAccessible(true);
Objectactual=targetMethod.invoke(TestTarget.class,newObject[]{input});
assertEquals(expected,actual);
}

⑺ java 私有的属性,方法和公有的介绍一下

publicclassTest{	
privateStringgen; //私有属性,表示用户性别
publicStringgetGen(){ //公开方法,用来获取这个用户的性别
returngen;
}
publicvoidsetGen(Stringgen){ //公开方法,用来获取这个用户的性别
this.gen=testGen(gen); //当用户设置性斗或别的燃森时候,调用私有方法来判断参数是否合法
}

/**
*私有方法,用来测试用户设置的性别是否为男|女,如果设置不正确默认为男
*@paramgen 可选值,男|女
*@return如果不合法,则返回男
*/
privateStringtestGen(Stringgen){
if("男".equals(gen)||"女".equals(gen)){
returngen;
}else{
return空段伍"男";
}
}


publicstaticvoidmain(String[]args){

}
}

⑻ 一个公有方法里面包含私有方法时,该怎样进行单元测试

如果这个方码凯胡法复杂到你必须对它进行单元测试,那么你可迟拦以把它重构到一个独立的class中,然后针孙棚对这个class来建立单元测试。

阅读全文

与私有方法如何测试相关的资料

热点内容
三种房贷计算方法 浏览:293
99999简便计算方法说明 浏览:444
户外报警器参数错误解决方法 浏览:209
空翻日常训练方法 浏览:771
缸外过滤器的使用方法 浏览:292
苹果5s手机悬浮键设置在哪里设置方法 浏览:520
糖尿病人怎么治疗效果最好的方法 浏览:319
微信缓存和聊天图片在哪里设置方法 浏览:764
手机水凝膜使用方法 浏览:83
涂芦荟胶正确方法 浏览:43
食用冰块的储存方法 浏览:757
家庭简单运动方法 浏览:153
手机外壳模型制作方法 浏览:367
短发快速长长的方法 浏览:600
卫浴地垫安装方法 浏览:952
黄粉使用方法 浏览:19
宝马金融计算方法 浏览:892
酱鸭卤水制作方法视频 浏览:789
孩子痔疮怎么治疗方法 浏览:76
表达有哪些方法至少写三点 浏览:48