我有一个简单的测试类
class SimpleClassTest {
private fun <T> anyObject(): T {
return Mockito.anyObject<T>()
}
lateinit var simpleObject: SimpleClass
@Mock lateinit var injectedObject: InjectedClass
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
}
@Test
fun testSimpleFunction() {
simpleObject = SimpleClass(injectedObject)
simpleObject.simpleFunction()
verify(injectedObject).settingDependentObject(anyObject())
}
}
工作正常并通过。
由于私有通用anyObject()
函数只使用一次,所以我决定内联它(手动),即删除对该函数的需要,从而改变
verify(injectedObject).settingDependentObject(anyObject())
到
verify(injectedObject).settingDependentObject(Mockito.anyObject<DependentClass>())
然而现在这个错误就像
java.lang.IllegalStateException: Mockito.anyObject<DependentClass>() must not be null
我做错了内联函数调用直接语句?
使用
之间有什么不同吗?private fun <T> anyObject(): T {
return Mockito.anyObject<T>()
}
以及以下?
Mockito.anyObject<DependentClass>()
答案 0 :(得分:5)
results = [lines.index(line), line]
的来源:
Mockito.anyObject()
此方法为Mockito设置一些内部状态,然后继续返回/**
* Matches anything, including null.
* <p>
* This is an alias of: {@link #any()} and {@link #any(java.lang.Class)}
* <p>
* See examples in javadoc for {@link Matchers} class
*
* @return <code>null</code>.
*/
public static <T> T anyObject() {
return (T) reportMatcher(Any.ANY).returnNull();
}
。由于您期望null
方法中存在非空实例,因此运行时失败。
为什么你的第一个方法成功了,但是,我不确定。将settingDependentObject()
投射到null
seemed to work a while ago,但它不再适用于我。就此而言,我无法让你的第一个实现成功。