结论:使用Junit4+Mockito或者Junit4+PowerMock
理由:
1.Junit4目前应用最广泛。最新版为Junit5,早期有Junit3。
2.Mockito比Jmock的语法要更简洁、易懂。Mockito模拟不了的静态函数、构造函数、私有函数等,用PowerMock作为补充。
应用:
Junit()
注意:使用@Before和@After可以保证:
--单个@Test方法执行前会创建新的XxxTest实例;
实例变量的状态不会传递给下一个@Test方法。
--单个@Test方法执行前后会执行@Before和@After方法。

@Before@After@BeforeClass@AfterClass使用场景
--@Before :
初始化测试对象;例如:input=new FileInputStream();
--@After :
销毁
--@Before
创建的测试对象,;例如:input.Close();
--@BeforeClass:
初始化非常耗时的资源,例如:创建数据库。
--@AfterClass:清理
@BeforeClass
创建的资源,例如:删除数据库。

Mock 工具

自己的练习代码

package cp;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.util.HashMap;
import java.util.Map;

import org.junit.Test;
import org.mockito.Mockito;

import cs.MibInfoGetter;

public class CouldServiceTest {

	@Test
	public void testGetCapability() {
		Map<String, String> map = new HashMap<>();
		map.put("key", "value");
		MibInfoGetter mInfoGetter = mock(MibInfoGetter.class);
		Mockito.when(mInfoGetter.getOid("oid")).thenReturn(map);

		CapabilityParam cParam = CouldService.getCapability(mInfoGetter);

		assertEquals("value", cParam.serialNumber);
		assertTrue(cParam.is2sidedPrint);
		verify(mInfoGetter, times(1)).getOid("oid");
	}

}

参照:
https://blog.csdn.net/omashion/article/details/54092860