小结"/>
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对象
注解
@Mockprivate PrintWriter output;@Mockprivate 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@Testpublic 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.
更多推荐
mock 使用小结
发布评论