Kir*_*Yao 5 java mockito powermock
当我测试此静态方法时
public class SomeClass {
public static long someMethod(Map map, String string, Long l, Log log) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
与
import org.apache.commons.logging.Log;
@RunWith(PowerMockRunner.class)
//@PrepareForTest(SomeClass.class)
public class Tests {
@Test
public void test() {
...
PowerMockito.mockStatic(SomeClass.class);
Mockito.when(SomeClass.someMethod(anyMap(), anyString(), anyLong(), isA(Log.class))).thenReturn(1L);
...
}
}
Run Code Online (Sandbox Code Playgroud)
我知道了InvalidUseOfMatchersException。我的问题是:
isA(Log.class)返回null。@PrepareForTest注释添加到测试类并运行测试时,junit不会响应。为什么?编辑
我试图不使用参数匹配器,并得到
org.mockito.exceptions.misusing.MissingMethodInvocationException:when()需要一个参数,该参数必须是“模拟的方法调用”。例如:when(mock.getArticles())。thenReturn(articles);
同样,由于以下原因,可能会出现此错误:
您存根以下方法之一:final / private / equals()/ hashCode()方法。这些方法不能存根/验证。
在when()内部,您不会在模拟对象上调用方法,而是在其他对象上调用方法。
在 ...
因此,似乎是由于someMethod本身。该方法中有同步块。我想知道Powermockito是否可以模拟这种方法。
尝试将 isA() 替换为另一个 any() 调用,如下所示
Mockito.when(SomeClass.someMethod(anyMap(), anyString(), anyLong(), any(Log.class))).thenReturn(1L);
Run Code Online (Sandbox Code Playgroud)
[编辑]
收到异常时检查堆栈跟踪。你看到有NoClassDefFoundError报道吗?我注意到当我没有将 包含javassist.jar在我的项目中时,我遇到了与您类似的错误。
我使用 PowerMockito,这些是我添加到一个全新项目中的 jar,用于运行 @Tom 发布的代码
检查您是否使用兼容的 JAR 版本,并检查项目类路径中是否存在任何其他冲突的 JAR 始终是一个好主意。
| 归档时间: |
|
| 查看次数: |
8575 次 |
| 最近记录: |