单元测试利器——Mockito与PowerMockito

PowerMock可以用来模拟静态方法,构造函数,final类和方法,私有方法,去除静态初始化器等等。

Mockito只能模拟共有的方法

简单的例子来看一下怎么写UT:

public class FTPClient {

	public boolean isConnected() {
		return false;
	}
	
	public static String staticTest(){
		return "123";
	}
}<strong>
</strong>
public class FTPTest {
	private FTPClient ftp;
	
	FTPTest(FTPClient ftp){
		this.ftp=ftp;
	}
	public boolean isFTPConnected(){
		if (!ftp.isConnected()) {
			return false;
		}
		return true;
	}
}


测试用例:

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.mockito.Mockito.*;//mock,when,times
import static org.junit.Assert.*;//assertTrue

@RunWith(PowerMockRunner.class)
@PrepareForTest(FTPClient.class)//在这声明才能powermock这个类的static成员
public class TestMock {
	//写测试用例最重要的是要把代码结构调整,
	//界面组件的代码与逻辑代码解耦(比如文本框的输入,不传文本框对象而直接获得文本框的输入文本String)
	
	@Test
	public void public_test(){
		FTPClient FTPclient=mock(FTPClient.class);
		when(FTPclient.isConnected()).thenReturn(true);
		assertTrue(new FTPTest(FTPclient).isFTPConnected());
		verify(FTPclient,times(1)).isConnected();
	}
	
	@Test
	public void static_test(){
		PowerMockito.mockStatic(FTPClient.class);
		when(FTPClient.staticTest()).thenReturn("1234");
		assertEquals("1234", FTPClient.staticTest());
	}
}<strong>
</strong>

http://gojko.net/2009/10/23/mockito-in-six-easy-examples/

http://blog.csdn.net/onlyqi/article/details/6396646

http://blog.csdn.net/yangchao228/article/details/7999468


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值