<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.powermoc</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-objenesis</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
我的测试类是:
public class TestClass extends AbstractShiroTest{
@Rule
public PowerMockRule rule = new PowerMockRule();
@Autowired
SomeService someService;
@Before
public void setUp(){
Map<String, Object> newMap = new HashMap<String, Object>();
newMap.put("userTimeZone", "Asia/Calcutta");
Subject subjectUnderTest = mock(Subject.class);
when(subjectUnderTest.getPrincipal()).thenReturn(LMPTestConstants.USER_NAME);
Session session = mock(Session.class);
when(session.getAttribute(LMPCoreConstants.USER_DETAILS_MAP)).thenReturn(newMap);
when(subjectUnderTest.getSession(false)).thenReturn(session);
setSubject(subjectUnderTest);
PowerMockito.mockStatic(CasSessionUtil.class);
when(CasSessionUtil.getCarrierId()).thenReturn(1L);
}
@Test
public void myTestMethod() {
someService.doSomething();
}
}
DoSomething
调用了一个我需要模拟的静态方法。当我运行测试用例时,我得到javassist.NotFoundException:$proxy88
。
全堆栈跟踪:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-classloading-xstream</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
我甚至尝试过javassist Version15,但也有同样的问题。
自己找出了解决办法:
仅使用以下依赖项(用于Power Mock和Power Rule)
<!-- Required for PowerMock -->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
<!-- Required for PowerMockRule -->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule-agent</artifactId>
<version>1.4.12</version>
<scope>test</scope>
</dependency>
现在我没有得到上述任何一个例外
我的测试类是: 调用了一个我需要模拟的静态方法。当我运行测试用例时,我得到。 全堆栈跟踪: 我甚至尝试过javassist Version15,但也有同样的问题。
问题内容: 谁能总结一下,究竟什么功能使您在Mockito的基础上添加了PowerMock? 到目前为止,我已经找到了这些: 模拟静态,最终和私有方法 删除静态初始化器 允许在没有依赖项注入的情况下进行嘲笑-我不清楚这一点。你能详细说明吗? 它还会添加其他内容吗?您可以分几行进行总结吗? 使用PowerMock时需要牺牲一些东西吗? 问题答案: 我不知道还有其他好处,但是我想解决您的两个子问题(这
问题内容: 我有以下要模拟的Logger,但要验证是否正在调用日志条目,而不是内容。 我想模拟用于LoggerFactory.getLogger()的任何类,但是我找不到如何做到这一点。到目前为止,这是我最终得到的结果: 我想知道: 我可以模拟静态模型以用于任何课程吗? 我只能似乎运行的,因此我似乎无法改变每个方法的特点。有没有解决的办法? 编辑结果: 我以为我已经尝试过了,但没有成功: 但是,谢
当在eclipse中运行一个junit4测试案例时,它作为一个独立的应用程序运行得很好,我得到以下堆栈跟踪。 我的测试用例使用了以下注释 我如何告诉它忽略URLClasLoader?
斯波克行为怪异
我想使用Mockito对toEntity函数执行一个junit测试。 java.lang.NullPointerException org.mockito.exceptions.misusing.InvalidUseOfMatchersException:在此处检测到错误放置的参数匹配器: ->在com.example.mytest.setup(mytest.java:38) 不能在验证或短截之外