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

私有方法如何测试

发布时间: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来建立单元测试。

阅读全文

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

热点内容
考场查词典技巧和方法 浏览:637
魔芋水的制作方法视频 浏览:491
同分母分数加减法教学方法分析 浏览:321
平焊单面焊双面成型的教学方法 浏览:599
查询电脑图片有多张的方法 浏览:427
儿童口腔炎的治疗方法 浏览:339
七星漂走漂解决方法 浏览:976
医疗垃圾微生物杀灭率检测方法 浏览:122
汉服打结方法图片 浏览:257
花绳最简便的方法怎么样玩 浏览:519
宫颈糜烂最好的治疗方法 浏览:695
检测大分子蛋白质的方法 浏览:668
如何创建新的教学方法 浏览:897
痘印快速消除的方法 浏览:907
用白醋美白的正确方法 浏览:209
一楼楼顶漏水用什么方法解决 浏览:713
快速切红辣椒方法 浏览:704
格兰仕微电脑压力锅顶盖拆卸方法 浏览:448
猪脚卤水制作方法视频 浏览:981
养青斑鱼的方法和技巧 浏览:921