java如何访问private方法_java什么叫方法重写

java如何访问private方法_java什么叫方法重写当Java的类有一个方法的访问修饰符是private,我们在写测试类时该怎样对它进行测试吗?道难是先将它的修饰符改成public,然后在做完测试之后再将其改回public,其实完全不用这样做,我们在编写测试类的时候只要将其私有方法抽出,让其可以访问,就可以按要求进行测试了.开始我们先写一个被测试类,如下:package com.srcopen.test;public class Exa

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

当Java的类有一个方法的访问修饰符是private,我们在写测试类时该怎样对它进行测试吗?道难是先将它的修饰符改成public,然后在做完测试之后再将其改回public,其实完全不用这样做,我们在编写测试类的时候只要将其私有方法抽出,让其可以访问,就可以按要求进行测试了.

开始我们先写一个被测试类,如下:

java如何访问private方法_java什么叫方法重写
package
 com.srcopen.test;
java如何访问private方法_java什么叫方法重写
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写

public
 
class
 Example

{

java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写 
private int add(int a,int b){

java如何访问private方法_java什么叫方法重写  
return a+b;
java如何访问private方法_java什么叫方法重写 }

java如何访问private方法_java什么叫方法重写 
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写 
public int doAdd(int c,int d){

java如何访问private方法_java什么叫方法重写  
return this.add(c, d);
java如何访问private方法_java什么叫方法重写 }

java如何访问private方法_java什么叫方法重写}

 

这个类非常的简单,它有一个相加的私有方法,进行a+b,然后在一个公有方法doAdd(int,int)中进行调用.下面让我们写一个简单的测试类对这个被测试类进行测试,如下:

java如何访问private方法_java什么叫方法重写
package
 com.srcopen.test;
java如何访问private方法_java什么叫方法重写

import
 junit.framework.
*
;
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写

public
 
class
 Example_Test 
extends
 TestCase 

{

java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写    
public void testDoAdd() {

java如何访问private方法_java什么叫方法重写         Example example
=new Example();
java如何访问private方法_java什么叫方法重写         assertEquals(
4,example.doAdd(1,3));
java如何访问private方法_java什么叫方法重写    }

java如何访问private方法_java什么叫方法重写}

这对被测类的公有方法进行测试,应该是没问题的,然后对其私有方法进行测试,我们要想办法将其私有方法通过编程变成私有方法,主要用去Method这个类,将我们要测试的方法赋给它,其中它有一个设置,可使方法变成可进入,这样就可以达到测试的目的了,编写的完整代码如下:

java如何访问private方法_java什么叫方法重写
package
 com.srcopen.test;
java如何访问private方法_java什么叫方法重写

import
 junit.framework.
*
;
java如何访问private方法_java什么叫方法重写

import
 java.lang.reflect.Method;
java如何访问private方法_java什么叫方法重写

import
 java.lang.reflect.InvocationTargetException;
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写

public
 
class
 Example_Test 
extends
 TestCase 

{

java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写    
public void testDoAdd() {

java如何访问private方法_java什么叫方法重写         Example example
=new Example();
java如何访问private方法_java什么叫方法重写         assertEquals(
4,example.doAdd(1,3));
java如何访问private方法_java什么叫方法重写    }

java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写    
public void testAdd() {

java如何访问private方法_java什么叫方法重写        Example example
=new Example();
java如何访问private方法_java什么叫方法重写        Object o
=null
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写        
try{

java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写            Method method 
= example.getClass().getDeclaredMethod(add,new Class[] {
int.classint.class}
);
java如何访问private方法_java什么叫方法重写            method.setAccessible(
true);                //让其方法可访问
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写
            o = method.invoke(example, new Object[] {
13}
);
java如何访问private方法_java什么叫方法重写java如何访问private方法_java什么叫方法重写        }
catch(Exception e){

java如何访问private方法_java什么叫方法重写            
java如何访问private方法_java什么叫方法重写        }

java如何访问private方法_java什么叫方法重写        assertEquals(
4,o.toString());
java如何访问private方法_java什么叫方法重写    }

java如何访问private方法_java什么叫方法重写}

注意导入Method类的时候要为import java.lang.reflect.Method;

还要就是使用method.setAccessible(true)将这个方法设为可以访问.

运行一下我们发现已经可以进行测试了.~~

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189617.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Verilog 流水线设计[通俗易懂]

    Verilog 流水线设计[通俗易懂]一、什么是流水线流水线设计就是将组合逻辑系统地分割,并在各个部分(分级)之间插入寄存器,并暂存中间数据的方法。目的是将一个大操作分解成若干的小操作,每一步小操作的时间较小,所以能提高频率,各小操作能并行执行,所以能提高数据吞吐率(提高处理速度)。二、什么时候用流水线设计使用流水线一般是时序比较紧张,对电路工作频率较高的时候。典型情况如下:1)功能模块之间的流水线,用乒乓buffer来交互数据。代价是增加了memory的数量,但是和获得的巨大性能提升相比,可以忽略不计。2)I/O瓶

    2022年8月14日
    1
  • height100%和100vh的区别

    height100%和100vh的区别1vh就是当前屏幕可见高度的1%,也就是说height:100vh==height:100%;重点:但是当元素没有内容时候,设置height:100%,该元素不会被撑开,此时高度为0,但是设置height:100vh,该元素会被撑开屏幕高度一致。…

    2022年5月25日
    40
  • 埃尔夫斯堡vs赫尔辛堡比分分析_马赛对阿贾克斯

    埃尔夫斯堡vs赫尔辛堡比分分析_马赛对阿贾克斯一、c++STL常用内容总结文章目录一、c++STL常用内容总结1.vector(数组)1.1介绍1.2方法函数1.3注意点1.3.a排序1.3.b访问2.stack(栈)2.1介绍2.2方法函数2.3注意点2.3.a.栈遍历2.3.b.模拟栈3.queue(队列)3.1介绍3.2方法函数4.deque(双端队列)4.1介绍4.2方法函数4.3注意点5.priority_queue(优先队列)5.1介绍5.2函数方法5.3设置优先级5.3.a基本数据类型的优先级5

    2025年5月25日
    1
  • java @apimodelproperty(apiignore)

    @ApiModel使用场景:在实体类上边使用,标记类时swagger的解析类。概述:提供有关swagger模型的其它信息,类将在操作中用作类型时自动内省。用法:@ApiModelProperty使用场景:使用在被@ApiModel注解的模型类的属性上。表示对model属性的说明或者数据操作更改。概述:添加和操作模型属性的数据。用法:…

    2022年4月14日
    292
  • c语言入门教程–-9循环与条件语句习题与总结

    c语言入门教程–-9循环与条件语句习题与总结

    2021年3月12日
    238
  • Swift 学习Using Swift mix and match, network: 写rss读者

    Swift 学习Using Swift mix and match, network: 写rss读者

    2022年1月9日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号