mock 使用小结

在进行mock操作之前 在类上需要添加相应注解
@RunWith(PowerMockRunner.class) 这个注解是必须的
@PowerMockIgnore({ “javax.script.", "javax.management.” })不要求一定添加 可以忽略一些控制台报出的错误。
一般控制台出现如下错误可以使用

ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider jdk.nashorn.api.scripting.NashornScriptEngineFactory not a subtype
2022-10-05 16:01:01,987 main ERROR Could not reconfigure JMX java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloader/javassist/JavassistMockClassLoader) previously initiated loading for a different type with name "javax/management/MBeanServer"
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	...
@RunWith(PowerMockRunner.class)
@PowerMockIgnore({
    "javax.script.*", "javax.management.*" })
public class WANestedExceptionTest 
@RunWith(PowerMockRunner.class)
@PrepareForTest({
    DBeanHandler.class })
public class DBeanHandlerTest

@PrepareForTest({ DBeanHandler.class }) 这个注解是根据你需要mock那些类进行添加
我个人是项目工程中自己写的类都在这个注解里添加,jar包里的类是直接通过@Mock,不在上面写

添加mock对象
注解

   @Mock
	private PrintWriter output;
	@Mock
	private HttpServletResponse res;

方法里直接写入

public void test001(){
   
  //普通方法引入对应类
  User user = mock(User.class);
  //普通方法使用
  when(user.getWriter()).thenReturn("user1");
  //静态方法引入对应类
  mockStatic(Account.class);
  //使用
  when(Account.getCampaign()).thenReturn(null);
}

构造方法

@Mock
private InitialContext incont;
//方法里
whenNew(InitialContext.class).withArguments(null).thenReturn(incont);

mock对象的构造方法时,在@PrepareForTest中添加使用该方法的类,而不是本类

@PrepareForTest({
    DBeanHandler.class })

私有方法

//方法1
	@Test
	public void test002() throws Exception {
   
		DBeanHandler db = spy(new DBeanHandler());
		String str = "";
		doReturn(str).when(db, "getRbString", Mockito.anyString());
		db.getDataSource();
	}
//方法2  AAFukenImple 需在类前的注解里添加
MemberModifier.stub(MemberMatcher.
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值