Junit3.X 初学 (四) 如何测试类的静态Static方法
2014-03-31 21:23
281 查看
如何测试类的静态Static方法?
a)将private方法的访问符改为 default (因为default访问修饰符课在同一个包中访问)
b) 用反射机制 method.getDeclaredMethod()
待测试类:
package com.sysu.junit3;
public class PrivateCalculator {
private int add(int a,int b)
{
return a+b;
}
}
测试类:
package com.sysu.junit3;
import java.lang.reflect.Method;
import junit.framework.Assert;
import junit.framework.TestCase;
public class PrivateCalculatorTest extends TestCase {
private PrivateCalculator calculator = null;
@Override
protected void setUp() throws Exception {
calculator = new PrivateCalculator();
}
public void testAdd() {
try {
Class<PrivateCalculator> classtype = PrivateCalculator.class;
Method method = classtype.getDeclaredMethod("add", new Class[] {
Integer.TYPE, int.class }); //用反射机制 method.getDeclaredMethod()
method.setAccessible(true); //设置 为true ,关闭JVM对访问规则的遵守。
Integer sum = null;
sum = (Integer) method.invoke(calculator, new Object[] {
new Integer(19), 81 });
Assert.assertNotNull(sum);
Assert.assertEquals(new Integer(100), sum);
} catch (Exception ex) {
ex.printStackTrace();
Assert.fail();
}
}
public static void main(String[] args) {
junit.awtui.TestRunner.run(PrivateCalculatorTest.class);
}
}
a)将private方法的访问符改为 default (因为default访问修饰符课在同一个包中访问)
b) 用反射机制 method.getDeclaredMethod()
待测试类:
package com.sysu.junit3;
public class PrivateCalculator {
private int add(int a,int b)
{
return a+b;
}
}
测试类:
package com.sysu.junit3;
import java.lang.reflect.Method;
import junit.framework.Assert;
import junit.framework.TestCase;
public class PrivateCalculatorTest extends TestCase {
private PrivateCalculator calculator = null;
@Override
protected void setUp() throws Exception {
calculator = new PrivateCalculator();
}
public void testAdd() {
try {
Class<PrivateCalculator> classtype = PrivateCalculator.class;
Method method = classtype.getDeclaredMethod("add", new Class[] {
Integer.TYPE, int.class }); //用反射机制 method.getDeclaredMethod()
method.setAccessible(true); //设置 为true ,关闭JVM对访问规则的遵守。
Integer sum = null;
sum = (Integer) method.invoke(calculator, new Object[] {
new Integer(19), 81 });
Assert.assertNotNull(sum);
Assert.assertEquals(new Integer(100), sum);
} catch (Exception ex) {
ex.printStackTrace();
Assert.fail();
}
}
public static void main(String[] args) {
junit.awtui.TestRunner.run(PrivateCalculatorTest.class);
}
}
相关文章推荐
- shell 二进制 十进制 十六进制 八进制转换
- 精确表达浮点数
- linux 下设置固定IP
- Ubuntu phpmyadmin 安装
- 【判断奇偶】#4 A. Watermelon
- 计算机视觉资料
- oracle 排序-合并联结
- 内核线程和用户线程的区别
- startActivityForResult() 中requestCode 和 resultCode 的作用
- Java继承与多态浅析
- The Secrets of Oracle Row Chaining and Migration
- AVL树(附加序列化和反序列化功能)
- Hash算法类
- Apache+Tomcat+AJP
- 报到
- I - I-number
- uboot的mtd功能支持
- bzoj1786
- 【DP】Edit Distance
- _itemFailedToPlayToEnd: { kind = 1; new = 2; old = 0; } 引发的搜索