测试private methods
Junit FAQ
How do I test private methods?
Testing private methods may be an indication that those methods should be moved into another class to promote reusability.
But if you must...
If you are using JDK 1.3 or higher, you can use reflection to subvert the access control mechanism with the aid of the PrivilegedAccessor. For details on how to use it, read this article.
实例:
Unit3.java
package com.bijian.study; class Sup { public int data; } public class Unit3 extends Sup { private int data; public Unit3() { this(0); } public Unit3(int data) { this.data = data; } private int getData() { return this.data; } private int getData2(int i) { // with paramater return this.data + i; } }
测试类Unit3Test.java:
package com.bijian.study; import org.junit.*; import java.lang.reflect.*; public class Unit3Test { private Unit3 c = new Unit3(10); private final Method methods[] = Unit3.class.getDeclaredMethods(); @Test public void testGetData() throws Exception { for (int i = 0; i < methods.length; ++i) { if (methods[i].getName().equals("getData")) { methods[i].setAccessible(true); Object o = methods[i].invoke(c); Assert.assertEquals(new Integer(10), o); } } } @Test public void testGetData2() throws Exception { for (int i = 0; i < methods.length; ++i) { if (methods[i].getName().equals("getData2")) {// 找到要测试的private method methods[i].setAccessible(true); // 设置可以访问 Object para[] = { 123 }; // 参数列表 Object o = methods[i].invoke(c, para); // 相当于c.privateMethod(para) Assert.assertEquals(new Integer(10 + 123), o);// 测试 } } } }
测试结果:
文章来源:http://blog.csdn.net/believefym/article/details/2302008
相关推荐
5. **断言结果**:在JUnit测试中,我们可以使用`assertEquals()`等断言方法,验证私有方法执行后的结果是否符合预期。 下面是一个简单的例子,展示如何使用JUnit测试私有方法: ```java import org.junit.Test; ...
本文将详细介绍JUnit测试工具及其安装方法。 **一、JUnit简介** JUnit是一个开源的、基于Java的测试框架,主要用于编写和运行可重复的单元测试。它的设计理念是使测试成为开发过程中的一个自然部分,通过自动化测试...
1. **测试注解**:在JUnit3中,测试类和方法是通过继承`junit.framework.TestCase`类来定义的。每个测试方法都以`test`开头,例如`testExample()`。这种方法现在已经被注解所取代,但在JUnit3中仍然是基础。 2. **...
总结来说,"Junit计算器测试"是一个很好的实践项目,它可以帮助初学者理解Junit的基本用法,包括创建测试类、编写测试方法、使用断言以及理解测试生命周期。通过这样的练习,开发者可以逐步掌握单元测试的精髓,提高...
JUnit测试通常以`@Test`注解的方法形式存在。一个测试类可以包含多个测试方法,每个方法对应一个要测试的代码逻辑。例如: ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api....
在"JUnit测试Sum_Divide"这个项目中,我们可以理解为作者创建了一个用于测试整数除法操作的测试类或方法。下面我们将深入探讨JUnit的基本概念、如何创建测试用例以及如何进行整数除法的测试。 首先,JUnit是一个...
此时,传统的JUnit测试方法就显得有些力不从心了,因为每个测试方法只能对应一组测试数据。为了解决这个问题,JUnit引入了参数化测试的概念,使得开发者能够通过一次性的定义多个数据集来覆盖多种测试场景。 #### ...
首先,让我们探讨一下为何不直接测试private方法。private方法是类的内部实现细节,它们的设计和实现是为了支持公共方法的功能。这些方法对外部世界是不可见的,因此它们的行为应该通过公共接口来间接验证。如果一个...
在这个"Java单元测试之JUnit"的代码实践中,我们将深入探讨JUnit的基本使用方法以及它在Java项目中的应用。 首先,JUnit是一个开源的、基于Java的测试框架,它允许开发者编写可执行的测试用例来检查代码的功能。...
Junit4通过注解(Annotation)来简化测试用例的编写,例如`@Test`注解标记测试方法,`@Before`和`@After`注解分别表示在每个测试方法执行前后的准备工作和清理工作。Calculate类包含四个方法:add、subtract、...
1. **注解驱动(Annotation-Based)**:JUnit 4.5引入了注解来声明测试方法和类,如`@Test`、`@Before`、`@After`等,这使得测试代码更加简洁易读。 2. **参数化测试(Parameterized Tests)**:`@RunWith...
6. **编写测试方法**:如同普通JUnit测试,编写`@Test`注解的方法,但此时的测试方法将使用参数化方法提供的数据。 例如,一个简单的参数化测试类可能如下所示: ```java @RunWith(Parameterized.class) public ...
JUnit的`@Test`注解标识了测试方法,例如: ```java @Test public void testMyMethod() { String result = myService.myMethod(); assertEquals("Expected result", result); } ``` `assertEquals`是JUnit提供的...
#### 五、生成JUnit测试框架 1. **右键点击Calculator类**:在Eclipse的Package Explorer中找到Calculator类,右键点击选择“JUnit Test Case”。 2. **选择测试方法**:在弹出的对话框中选择需要测试的方法,并...
JUnit4提供了丰富的断言方法,如`assertEquals()`、`assertTrue()`、`assertFalse()`等,用于检查测试结果是否符合预期。这些断言方法可以帮助我们判断程序的输出是否正确,是测试的关键组成部分。 ```java @Test ...
《Spring4与JUnit的简单测试实践》 在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱。Spring4作为其一个重要的版本,引入了许多改进和优化,使得测试变得更加便捷。而JUnit作为Java单元测试的事实...
在JUnit 4中,每个@Test注解的方法就是一个单元测试,每个测试方法应该独立于其他方法运行,避免了方法间的影响。 3. 更高级的JUnit 4特性 除了基本的断言和@Test注解外,JUnit 4还提供了许多高级特性,如: - `@...
`JUnit` 提供了注解(annotation)来简化测试的组织,例如 `@Test` 注解标记测试方法,`@Before` 和 `@After` 注解分别用于在每个测试前和后执行的初始化和清理操作。 **二、HttpUnit简介** `HttpUnit` 是一个模拟...
在Java开发中,JUnit是广泛使用的单元测试框架,它极大地简化了对代码的验证和调试。然而,随着并发编程的普及,多线程测试成为了一个不可或缺的部分,因为我们需要确保我们的程序在并行执行时能够正常工作。本篇将...