`
java-mans
  • 浏览: 11456026 次
文章分类
社区版块
存档分类
最新评论

使用Junit 测试私有方法

 
阅读更多

在Junit4中如何测试私有方法呢?

有如下类和方法:

public class PrintableCharacterASCII {

private static int firstPrintableCharacter = 33;
private static int numberOfPrintableCharacters = 94;
private static int numberOfCharactersPerLine = 72;

private static char[] generateCharacters(int start) {


char[] line = new char[numberOfCharactersPerLine + 2];

for (int i = start; i < start + numberOfCharactersPerLine; i++) {
line[i - start] = (char) (((i - firstPrintableCharacter)
% numberOfPrintableCharacters) + firstPrintableCharacter);
}
line[72] = '/r';
line[73] = '/n';

return line;
}

}

此类实现打印“ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~!"#$%&'()*”等字符。

利用Eclipse建立Junit4测试,选择“setUp()”方法:

自动生成如下代码:

import org.junit.Before;
import org.junit.Test;


public class PrintableCharacterASCIITest {

private PrintableCharacterASCII pca;

@Before
public void setUp() throws Exception {

}

}

我们添加代码:

声明被测试类:

private PrintableCharacterASCII pca;

首先,在setUp方法中建立被测试类的实例:

pca = new PrintableCharacterASCII();

@Test
public void testGenerateCharacters() {
try {
Class clazz = pca.getClass(); // 获取被测试类的反射
Class[] args = new Class[]{int.class}; // 建立参数
Method method = clazz.getDeclaredMethod("generateCharacters", args); // 获取私有方法和他的参数
method.setAccessible(true); // 允许访问


OutputStream output = new ByteArrayOutputStream();
int start = 33;
char[] result = (char[]) method.invoke(pca, start); // 调用被测类的方法

char[] expected = new char[]{'!', '"', '#', '$', '%', '&', '(', ')', '*', '+',
',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
':', ';', '<', '=', '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z', '[', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
Assert.assertEquals(expected, result); // 测试
} catch (Exception e) {
// TODO: handle exception
}
}

分享到:
评论

相关推荐

    JUnit4利用反射机制测试类的私有成员

    JUnit4利用反射机制测试类的私有成员

    accessive包-帮助访问私有参数和私有变量

    一个小框架,accessive,帮助访问私有参数和私有变量,可用于实现针对私有方法、变量的单元测试,解决JUnit中不方便对私有类型的数据进行测试的问题

    a6TestCollection:A6的JUnit测试的集合

    A6的JUnit测试的集合 为了有助于该测试集合,请首先通过单击应该在GitHub上存储库Web界面右上角的“ Fork”按钮来为此存储库创建一个“ fork”。这将允许您在您拥有GitHub写入权限的GitHub帐户中创建存储库的私有...

    Java测试新技术TestNG和高级概念.part1

    展示了与测试有关的折衷考虑,...7.6 测试私有方法 7.7 测试与封装 7.8 调试器的威力 7.9 记日志的最佳实践 7.10 时间的价值 7.11 本章小结 附录A IDE集成 附录B TestNG JavaDoc 附录C testng.xml 附录D 从JUnit迁移

    Java测试新技术TestNG和高级概念.part2

    展示了与测试有关的折衷考虑,...7.6 测试私有方法 7.7 测试与封装 7.8 调试器的威力 7.9 记日志的最佳实践 7.10 时间的价值 7.11 本章小结 附录A IDE集成 附录B TestNG JavaDoc 附录C testng.xml 附录D 从JUnit迁移

    java的测试类

    一个关于junit的时候会用到的公共方法,如映射访问私有函数,给类属性设置值,httpunit设置访问web端测试

    基础深化和提高-java反射技术

    Java反射技术指的是在运行时动态地获取类的...框架和工具:在很多框架和工具中,如Spring框架、JUnit测试框架等,都广泛使用了反射技术,用于实现灵活的配置和扩展。 虽然反射技术提供了很大的灵活性,但由于其涉及到

    fastcampus-java

    私有方法测试可以通过删除私有方法和测试或将方法选择为类(使用Refactor)来执行。 让我们激活重构的使用! (方法,类等) 第2天-HTTP Web服务器练习 使用纯Java- [项目代码]构建Web服务器( ) 字符串追加公告...

    Lazy-Coding:我厌倦了写方法,所以我决定写更高级的方法来代替

    Lazy-Coding 将读取这些,并编写类、构造函数、getter、setter、equals 方法、toString 和 JUnit 测试,同时添加 Javadoc 样式注释。 缺点? 还没打码。。。 但是你不能自己写这些吗? 当然,如果我在 5 小时内...

    algorithms-assign1

    上面提到的两个类都未经测试,也没有经过主类-ImageAnalyzer的检查,因为其所有方法都是私有的。 为ComponentImage类提供了完整的JUnit测试覆盖。 ImageAnalyzer类中的Javadoc提供了有关如何运行该应用程序的说明...

    day020-继承加强和设计模式代码和笔记.rar

    私有化构造方法 2. 在类中创建一个对象,并且用private、static、final修饰 private为了避免在外部直接访问当前对象 static是为了在静态方法中可以返回当前类中的对象 final:可加可不加...

    Ajax基础教程(扫描版)

    本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...

    PrivateAccessor-开源

    PrivateAccessor是一个特殊的Java类,它绕过Java修饰符安全性,以提供对java类中私有字段和成员的访问。 与JUnit一起使用可让您测试私有字段和方法。

    Test-Driven+Development+By+Example-测试驱动开发【高清+有目录+可搜索+可编辑】

    第4 章私有性······························································································...

    java-9-playground:Java 9热门新功能的示例

    展示了Java 9的新语言功能和API的JUnit 5测试的集合 新的集合工厂方法(CollectionFactoryMethodsTest.java) 新的HttpClient(HttpClientTest) 与私有方法的接口(InterfaceWithPrivateMethodTest) 新的...

    java收银系统源码-Bank:软件工程课程作业

    此存储库目前是私有的,但稍后将公开。 测试模块 JUnit5 用作测试工具。 MVC 模块 模型 - 实体类: 包装模型 包实用程序视觉 - 边界类: 包页面控制器 - 控制器类: 包主 包控制器 模块结构 __________银行| |_____...

    leetcode分类-algorithms:我的LeetCode解决方案,Java版

    方法(例如数组转链表、字符串转数组、字符串转二叉树等)放到数据结构本身的 class 中,避免每个二叉树题目中都重新定义一遍数据结构类。 4、目录 others 中是面试过程中,或者其他地方看到的题目 5、2020.4.2 为...

    gorg-ui-v3:Gorg UI v3

    :butterfly: Gorg UI v3 此回购包含项目的基本体系结构,同时进一步的开发已移至私有monorepo(目前如此)。 您可能还想签出该项目的一个版本以获取先前的更新。 打字稿 主题化 样式系统 结构测试 :gear_selector: ...

Global site tag (gtag.js) - Google Analytics