PowerMock 调用私有构造函数

x33g5p2x  于2021-12-28 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(302)

– Start
假设我们有如下类。

package demo05;

public class BusinessService {
	private String serviceName = "";
	
	public BusinessService () {
		this("account service");
	} 
	
	// 私有构造方法
	private BusinessService (String serviceName) {
		this.serviceName = serviceName;
	}

	public String getServiceName() {
		return serviceName;
	} 
	
}

下面我们看看如何调用私有构造函数。

package demo05;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.reflect.Whitebox;

@RunWith(PowerMockRunner.class)
@PrepareForTest({ BusinessService.class })
public class BusinessServiceTest {

	@Test
	public void test() throws Exception {
		String testServiceName = "test";
		
		// 调用私有构造函数
		BusinessService businessService = Whitebox.invokeConstructor(BusinessService.class, testServiceName);

		// 验证
		Assert.assertEquals(testServiceName, businessService.getServiceName());
	}

}

– 更多参见:PowerMock 精萃
– 声 明:转载请注明出处
– Last Updated on 2019-08-17
– Written by ShangBo on 2019-08-17
– End

相关文章