java私有方法属性的测试工具--Accessive
1.参考http://code.google.com/p/accessive/
2.详细使用说明
http://code.google.com/p/accessive/wiki/Documentation
3.java基本类型的属性的测试
3.1.业务对象类
package com.wdzwdz;
public class AnObject {
private int anInt;
private String aString;
private String aMethod(int value) {
return "wdz";
}
private String anotherMethod(Integer a, int b, float c) {
return "wdz" + a + "," + b + "," + c;
}
public AnObject() {
};
public AnObject(int a, String s) {
anInt = a;
aString = s;
};
}
//////////////
//3.2.业务对象的私有属性的测试
//注意例子中的私有属性是java基本类型(int),而非包裹类(Integer);测试时使用了对应的包裹类
package com.wdzwdz.test;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.j2speed.accessor.FieldAccessor;
import com.wdzwdz.AnObject;
public class AnObjectTest {
private AnObject target;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
target = new AnObject(10, "wdz1");
}
@Test
//基本类型的属性,需要使用对应的包裹类来指定
public void testAnInt() {
FieldAccessor<AnObject, Integer> anInt = new FieldAccessor<AnObject, Integer>(
"anInt", AnObject.class);
Integer i = anInt.get(target);
Assert.assertEquals(new Integer(10), i);
}
@Test
public void testAnObjectIntString() {
FieldAccessor<AnObject, String> h= new FieldAccessor<AnObject, String> ("aString",AnObject.class);
String act= h.get(target);
Assert.assertEquals("wdz1", act);
}
}
//////////
//4.私有方法的测试
//私有方法的参数带有包裹类型(Integer),基本类型(int)
package com.wdzwdz.test;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.j2speed.accessor.MethodAccessor;
import com.wdzwdz.AnObject;
/****
* test methord
* */
public class AnObjectTest2 {
private AnObject target;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
target = new AnObject(10, "wdz1");
}
@Test
public void testanotherMethod() {
MethodAccessor<String> m = new MethodAccessor<String>("anotherMethod",
target, Integer.class, int.class, float.class);
String s = m.invoke(new Integer(1), 2, 1.1f);
System.err.println(s);
Assert.assertEquals("wdz1,2,1.1", s);
}
}
分享到:
相关推荐
总结起来,Java反射为我们提供了在运行时操作类、方法和属性的强大工具,包括调用私有方法和获取私有属性值。然而,它也是一把双刃剑,使用时需权衡利弊,确保代码的稳定性和安全性。在处理私有成员时,务必注意对...
`accessive`是一个小型的Java框架,它的主要目的是帮助开发者绕过Java的封装机制,以便在测试场景下能够方便地访问和修改私有成员。这样,我们可以在不破坏原有代码结构的情况下,对私有方法进行有效的单元测试,...
在`TestCaseHelperTest.java`中,我们可以看到一个示例测试类,它可能是用于测试`TestCaseHelper`的各个方法,包括可能的私有方法测试策略的实现。测试类通常会包含一系列`@Test`注解的方法,每个方法对应一个特定的...
对于私有方法和属性的访问,Java反射提供了一种特殊的方式。通常,私有成员在外部类是不可见的,但通过`java.lang.reflect.Method`和`java.lang.reflect.Field`类,我们可以绕过访问控制。例如,`Method`类的`...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性和方法,即使这些属性或方法是私有的。这篇博客文章可能讨论了如何利用反射机制来获取类的私有属性并读取其对应...
- **继承**: 一个类可以从另一个类派生,派生出的新类继承了基类的所有非私有属性和方法。 - **类层次结构**: 通过继承可以构建类的层次结构,提高代码的复用性和扩展性。 - **子类与父类**: 子类继承父类后,可以在...
在Java中,Bean通常是指符合JavaBeans规范的Java类,它们是可重用的组件,具有无参数的构造函数、`get`和`set`方法(用于访问属性)以及可以序列化的特性。JavaBeans允许开发者在运行时通过反射机制来创建、配置和...
kiftd是一款专门面向个人、团队和小型组织的Java开源网盘系统。使用简单,解压即用。适合家庭、团队或小型组织在局域网&公网中搭建私有云盘实现文件共享。支持Windows/Linux/Mac OS,只需3分钟即可完成部署,同时还...
Java 反射访问私有变量和私有方法 Java 反射机制是 Java 语言中的一种强大的工具,使得我们可以在运行时装配代码,而无需在对象之间进行源代码链接,从而使代码更具灵活性。在实际测试中,我们经常需要访问类的非...
在单元测试中,我们通常不直接测试私有方法,而是通过测试公有方法来间接验证私有方法的正确性。然而,有时私有方法包含了复杂的逻辑,为了确保整个类的正确性,我们可能需要对其进行单独测试。PowerMock允许我们...
提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,java * 反射工具类. 提供调用getter/...
- 测试方法:采用模拟故障、性能压力测试、监控和日志分析等多种手段,全面评估系统的抗脆弱性。 2. 高可用测试 - 单服务故障测试:逐一模拟Keystone、Cinder、Glance、Neutron和Nova服务的故障,验证系统是否能...
* 私有的构造子,用以保证外界无法直接实例化 */ private ReadConfigation() { m_file = new File(PFILE); m_lastModifiedTime = m_file.lastModified(); if(m_lastModifiedTime == 0){ System.err....
- **Apache Commons BeanUtils**:提供了一套方便的工具方法,用于Bean的属性遍历和值设置,如`PropertyUtils.getPropertyDescriptors(Class<?> beanClass)`可获取Bean的属性描述符。 - **Spring Framework**:...
在面向对象编程中,权限修饰符是控制类成员(属性和方法)访问范围的关键元素,而方法的重写则是实现多态性的重要方式。下面将详细解释这两种概念。 一、四种权限修饰 1. **private(私有)**:私有成员只能在定义...
Java到Python的转换工具,如"java2python",是一个重要的软件开发辅助工具,它能够帮助程序员将已有的Java代码转换成Python代码,以便在Python环境中执行或进行进一步的开发工作。这种转换过程涉及到多种语言特性和...
子类可以添加新的属性和方法,或者覆盖父类的方法,实现功能扩展。 5. 多态(Polymorphism):多态是指同一种行为可以有不同的表现形式,具体取决于对象的类型。在Java中,多态主要体现在方法重写(Override)和...
面向对象是Java编程的核心概念,本测试主要涵盖了面向对象的基础知识,包括函数重写、类设计、封装、静态成员、抽象类与接口、构造函数等多个方面。以下是对这些知识点的详细解释: 1. 函数重写(Override): - ...