代码如下:
package com.wang;
import java.lang.reflect.Method;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CommonCheckerTest {
commonChecker conc = new commonChecker();
Method method;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
method = conc.getClass().getDeclaredMethod("convertZnkk", WebTblCtrl.class, short.class);
method.setAccessible(true);
}
@After
public void tearDown() throws Exception {
}
@Test
public void test_convert_0010() {
try {
WebTblCtrl webTblCtrl = new WebTblCtrl();
webTblCtrl.setValue("");
boolean tof = (boolean) method.invoke(conc, webTblCtrl, (short) 0);
assertEquals(true, tof);
assertEquals("", webTblCtrl.getValue());
} catch (Exception e) {
// TODO: handle exception
}
}
}
总结如下
@BeforeClass
修饰的方法会在所有方法被调用前执行,且该方法时静态的,所以当测试类被加载后就接着运行它,而且在内存中他只会存在一份实例,他比较适合加载配置文件(针对所有测试,只执行一次 )
@AfterClass
所修饰的方法通常用来对资源管理,如关闭数据库连接(针对所有测试,只执行一次 )。
@Before
和@After
会在每个测试方法前后各执行一次。
@Test
:测试方法,在这里可以测试期望异常
和超时时间
。文章来源:https://www.toymoban.com/news/detail-512235.html
java.lang.reflect.Method
一个java.lang.reflect.Method对象提供关于类或者接口上单个方法的信息访问,所反射的方法可以是类方法或实例方法(包括抽象方法);一个Method方法匹配实际参数时允许加宽转换,但是如果调用实际参数时变窄转换将会抛出IllegalArgumentException异常;文章来源地址https://www.toymoban.com/news/detail-512235.html
import java.lang.reflect.Method;
Method method;
method = conc.getClass().getDeclaredMethod("convertZnkk", WebTblCtrl.class, short.class);
method.setAccessible(true);
boolean tof = (boolean) method.invoke(conc, webTblCtrl, (short) 0);
System.out.println("--------------getDeclaredMethod--------------------------");
/**
* 返回在指定Class对象或者接口中声明的Method对象;如果同一个类中声明了一个以上的具有相同
* 参数类型的方法,并且其中一个方法具有比其它任何类型更具体的返回类型,则返回该方法;否则,
* 任意选择一个方法返回;
*
*/
Class<?> clazz = MethodTest.class;
Method method3 = clazz.getDeclaredMethod("setAge", new Class[] {int.class});
Method对象中方法详解
- invoke
MethodTest obj = new MethodTest();
/**
* 调用由这个方法对象表示的基础方法,具有指定参数的指定对象;单个参数会自动的解包以匹配原始
* 类型参数,并且原始和引用类型参数都在必要是服从方法调用的类型转换;
*
* 如果基础方法是静态的,则忽略指定的参数,他可能为null;
*
* 如果基础方法所需的形式参数数量为0,则提供的参数数组可以为长度为0的数组或者null;
*
* 如果基础方法是实例方法,则使用Java语言规范(第二版第152.4.4节)中所记录的动态方法查找来调用;
* 特别是,将基于目标对象的运行时类型重写。
*
* 如果基础方法是静态的,则声明该方法的类如果尚未初始化则初始化。
*
* 如果该方法正常完成,返回的值将返回给调用方的调用方;如果该值具有一个原始类型,
* 则它首先被适当地包裹在一个对象中。但是,如果值具有原始类型数组的类型,则数组中
* 的元素是包在对象中的<i>不</i>;换句话说,返回一个原始类型数组。如果基础方法返回类型无效,
* 则调用返回null。
*
* @param obj 调用基础方法的对象;
* @param args方法调用中使用的参数;
* @return 将该对象表示的方法使用给定参数调用的结果;
*
* @exception IllegalAccessException、IllegalArgumentException、InvocationTargetException
* 、NullPointerException、ExceptionInInitializerError
*/
Object result = method.invoke(obj, 1);
到了这里,关于Junit-4.12 测试方法『详解』的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!