1. 程式人生 > >Junit3.X 初學 (四) 如何測試類的靜態Static方法

Junit3.X 初學 (四) 如何測試類的靜態Static方法

如何測試類的靜態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);
	}

}