Tag: mockito

我怎么能测试一个方法是不是被称为非模拟对象?

我有一个测试如下,在给定的情况下,我想确保mainPresenter.presenterFunction()不被调用。 class MainPresenterTest { val mainPresenter: MainPresenter val mainView: MainView val mainBridge: MainBridge init { mainView = mock(MainView::class.java) webBridge = mock(MainBridge::class.java) mainPresenter = MainPresenter(mainView, mainBridge) } @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun simpleTeset1() { // Given whenMock(mainView.viewFunctionCondition()).thenReturn(true) // When mainPresenter.onTriggger() // Then verify(mainView).viewFunction1() verify(mainPresenter, never()).presenterFunction() verify(mainView, never()).viewFunction2() } } 然而它错误地指出 org.mockito.exceptions.misusing.NotAMockException: Argument passed […]

模拟与Mockito 2最后一课

我正在从当前正在进行的项目中删除Powermock,所以我试图用Mockito(mockito-core-2.2.28)重写一些现有的单一测试。 当我运行测试时,我有以下错误: org.mockito.exceptions.base.MockitoException: 不能模拟/间谍类com.ExternalpackagePath.External类 Mockito不能模拟/间谍,因为: 最后一堂课 我知道这个问题已经被问到( 如何用mockito来模拟最后一个类 , Mock对象用Mockito来调用最终类的静态方法 ),但是我没有找到我正在寻找的答案。 这是我的代码的摘录: public class MyClassToTest extends TestCase { private MyClass myClass; @Mock private Externalclass ext; // This class is final, I would like to mock it @Override protected void setUp() throws Exception { MockitoAnnotations.initMocks(this); // <<<< The exception is thrown here ext = Mockito.mock(Externalclass.class); } […]

sharedpreferences上的nullPointerException helper类运行测试时

我开始在一个小演示android应用程序上使用kotlin。 我创建了一个sharedpreferences帮助类,我试图用junit和mockito来测试。 下面是我的sharedprefshelper public class SharedPrefsHelperImp( cont : Context) : SharedPrefsHelper { val prefsname: String = "prefs" var prefs: SharedPreferences? = null var edit: SharedPreferences.Editor? = null init { prefs = cont.getSharedPreferences(prefsname, Context.MODE_PRIVATE) edit = prefs!!.edit() } override fun getPrefsStringValue(key: String) : String { return prefs!!.getString(key, "") } override fun addPrefsStringVal( key : String, value: […]

如何在Android项目中的Java模块上模拟Mockito 2的最终课程?

我有一个Android Clean Architecture项目,在Kotlin中有三个模块: 数据(Android库) domaine(Java库) 演示(Android应用程序) 这三个模块都有用junit编写的单元测试 。 但是对于Kotlin,每个课程都是默认的最终课程。 我很快就遇到了问题: 如何用mockito来嘲笑最后一堂课 现在可以用Mockito 2 可以通过mockito扩展机制来完成,方法是创建包含一行的文件/mockito-extensions/org.mockito.plugins.MockMaker : mock-maker-inline 此解决方案在数据模块(Android库)和表示模块(Android应用程序)上运行良好, 但在我的domaine模块(Java库)上不起作用 。 我知道这个问题已经被问到( 如何用mockito来模拟最后一个类 , Mock对象用Mockito来调用最终类的静态方法 ),但是我没有找到我正在寻找的答案。

Mockito模拟创作里面的模拟创作

我得到的错误是org.mockito.exceptions.misusing.UnfinishedStubbingException ,其中一个可能的原因是“你在另一个模拟的内部行为之前”然后返回“指令,如果完成”。 val mockHttpHandlerContext = mock<HttpHandlerContext>().let { whenever(it.request).thenReturn(mock<HttpRequest>().let { whenever(it.queryParameters).thenReturn(mapOf( "itype" to listOf("msisdn"), "uid" to listOf(inputMsisdn) )) it }) whenever(it.scope()).thenReturn(ProcessingScope.of(Timings("test", 1000L))) it } 是摆脱嵌套模拟创造的唯一解决方案? 这真的会使代码更难理解,也许有一个已知的解决方法? 代码片段是Kotlin。

如何在Kotlin中创建一个在类上运行的扩展函数?

试想一下,我有这样的代码行: import org.mockito.Mockito val mock = Mockito.mock(Sim2ParametersProvider::class.java) 我想能够这样写: val mock = Sim2ParametersProvider::class.mock() 我如何做到这一点? 我试过了 fun <T : kotlin.Any> kotlin.reflect.KClass<T>.mock() = Mockito.mock(this) 但它给我编译错误。

一个模拟的类怎么能不等于它在Kotlin的java类呢?

(activity as HomeActivity).javaClass == HomeActivity::class.java 返回false 。 为什么? 请注意, activity是与以下功能模拟 fun set(activity: KClass<out Activity>) { this.activity = Mockito.mock(activity.java) }

在Kotlin函数中使用Mokito anyObject()时,指定为非null的参数为null

我的代码如下,引用到https://stackoverflow.com/a/30308199/3286489中的解决方案 import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.mockito.Mockito.* class SimpleClassTest { private fun <T> anyObject(): T { Mockito.anyObject<T>() return uninitialized() } private fun <T> uninitialized(): T = null as T lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun testSimpleFunction() { simpleObject = SimpleClass(injectedObject) verify(injectedObject).settingDependentObject(anyObject()) } […]

Mockito通缉,但没有调用

我是新手写测试和使用Mockito。 我已经阅读了Stackoverflow中的类似主题,并进行了建议的更改,确保所考虑的类/接口/方法处于打开状态。 我试图遵循这一点 嘲笑构造函数注入依赖 这是我到目前为止的测试 class RegistrationPresenterTest { @Test fun testRegisterSuccess() { val mockService = mock<IHerokuInteractor>() val mockLocal = mock<ILocalStorageInteractor>() val mockView = mock<RegisterView>() val mockRegistrationResponse = HerokuRegisterResponse("hash") val mockPair = ImeiPair("imei","hash") val presenter = RegisterPresenterImpl(mockLocal,mockService) whenever(mockService.register(any())).thenReturn(Observable.just(mockRegistrationResponse)) whenever(mockLocal.clearPreferences()).thenReturn(Observable.just(true)) whenever(mockLocal.putImeiPair(any())).thenReturn(Observable.just(true)) //whenever(presenter.writeImeiPairLocally(any())) How do I specify parameters since it uses a parameter from the register method? presenter.bindView(mockView) […]

Kotlin,Mockito和Android测试仪器。 Lateinit属性尚未初始化

我试图嘲笑一个测试仪器的UseCase依赖。 我正在创建一个@Rule来处理这个问题: LocationsUseCaseRule.kt class LocationsUseCaseRule : ExternalResource() { @Mock lateinit var locationsUseCase : LocationsUseCase @Throws(Throwable::class) override fun before() { super.before() LocationsUseCase.setInstance(locationsUseCase) } } 但是当我before()点击时,不会加载用例。 我有单元测试相同的实现,它的工作原理。 这些是我的依赖: // Mockito def mockitoVersion = "2.6.3" testCompile 'org.mockito:mockito-core:' + mockitoVersion androidTestCompile 'org.mockito:mockito-core:' + mockitoVersion androidTestCompile "org.mockito:mockito-android:" + mockitoVersion testCompile "com.nhaarman:mockito-kotlin-kt1.1:1.5.0" 这是我如何在LocationsUseCase设置我的实例: object Singleton { var instance: LocationsUseCase? = null […]