1. 程式人生 > >JUnit獲取測試用例名稱

JUnit獲取測試用例名稱

在JUnit中獲取測試用例名稱有兩種方法:

方法1:呼叫TestName的getMethodName方法

方法2:通過Thread類獲取當前堆疊資訊

具體示例如下:

父類:

package cskgnt.test;

import org.junit.Rule;
import org.junit.rules.TestName;

public class Father {

	public String getFunctionName() {
		return Thread.currentThread().getStackTrace()[2].getMethodName();
	}

	public String getClassName() {
		return Thread.currentThread().getStackTrace()[2].getClassName();
	}
	
	@Rule
	public TestName name = new TestName();
}
子類:
package cskgnt.test;

import org.junit.Test;

public class Son extends Father {

	@Test
	public void testCase() {
		System.out.println("Method name: " + name.getMethodName());
		System.out.println("Method name: " + getFunctionName());
		System.out.println("Class name: " + getClassName());
	}
}

執行結果如下:

Method name: testCase
Method name: testCase
Class name: cskgnt.test.Son

可以看出,方法1是JUnit特有的方法,且只能獲取當前方法名,無法獲取類名;方法2是java通用的方法,不僅限於JUnit,且可以獲取完整類名、方法名,推薦方法2