Tag: mockito

使用mockito的Kotlin协同程序unit testing

当我尝试模拟和validation一个正在调用暂停function的活动时,我得到了下面的内容 错误: 论据是不同的! 通缉:userManager.getAccountInfo((onCreate_callsGetAccountInformation $ 1)kotlinx.coroutines.experimental.CoroutineScope。() – > kotlin.Unit); – > at com.pharmacy.AccountActivityTests $ onCreate_callsGetAccountInformation $ 1.doResume(AccountActivityTests.kt:117)实际的调用有不同的参数:userManager.getAccountInfo(()kotlinx.coroutines.experimental.CoroutineScope。() – > kotlin.Unit) – > at com.pharmacy.AccountActivity $ loadAccountInfoAsync $ 1 $ 1.doResume(AccountActivity.kt:199) 码: 我有我的unit testing用runBlocking装饰如下所示: @Test fun onCreate_callsGetAccountInformation() = runBlocking { whenever(userManager.getAccountInfo()).thenReturn(AccountInformation()) subject = Robolectric.setupActivity(AccountActivity::class.java) verify(userManager).getAccountInfo() } 这里 – > usermanager.getAccountInfo()是一个挂起的函数。

TestScheduler不起作用(Kotlin + RxJava2 + mockito)

我想写一个unit testing,将validation下面的callInit方法。 但是,我有空指针exception行保存subscribe( 。我的问题是我如何validation在下面的方法中的下一个和onerror条件? override fun callInit() { val requestInit = RequestInit(os = “android”, osVersion = deviceUtil.osVersion(), appVersion = deviceUtil.apiVersion()) compositeDisposable.add( interactor.getInit(requestInit) .subscribe( { view.hideProgress() this.commercialLink = it.commercialLink view.updateScreen() }, { error -> view.onError(error) } ) ) } 测试方法: @Test fun should_update_commerciallink_AND_updateScreen_when_callInit() { val request = RequestInit(“android”, “version”, “osversion”) val responseInit = ResponseInit(false, false, “updatelink”, […]

Kotlin + Mockito:得到一个null

请我有点困惑,这个测试失败与“java.lang.IllegalStateException:notNull()不能为空” : @Test fun when_resume_subscribe() { // WHEN presenter.onStart() // THEN verify(model).subscribe(notNull()) // <—- fails here } 这里是测试的方法: override fun onStart() { model.subscribe(object : Observer { override fun onCompleted() { view?.showProgress(false) } //… more stuff… 请问发生了什么?

如何使用Mockito模拟kotlin ByteArray?

当我运行这个: class SomeTest { fun howToMockByteArray() { val bytes = Mockito.mock(ByteArray::class.java) } } 投掷: org.mockito.exceptions.base.MockitoException: Cannot mock/spy class [B Mockito cannot mock/spy because : – VM does not not support modification of given type 我如何使用Mockito来模拟kotlin的ByteArray?

如何使用手动嵌入Kotlin趣味

我有一个通过测试下面,使用内联的乐趣。 class SimpleClassTest { private inline fun anyObject(): T { return Mockito.anyObject() } 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()) } } 但现在我想删除内联的乐趣,因为它只有一个用法。 所以我用实际的类名称替换T,即Response(来自Okhttp),并将其直接设置为参数settingDependentObject class SimpleClassTest { lateinit var simpleObject: SimpleClass @Mock lateinit var injectedObject: InjectedClass @Before fun […]

Spock与Mockito测试Kotlin课程

我有一些用Spock编写的测试,它涵盖了我的Java代码。 现在我迁移到Kotlin,问题是我不能嘲笑最终课,所以我决定使用这里描述的Mockito插件: https : //github.com/mockito/mockito/wiki/What%27s-new-in-Mockito-2# unmockable 问题是我需要用Mockitos的any(),anyString(),when(),then()等替换每个’_”>>’吗? 我试图用Mockito来模拟最终的类,但它似乎不工作。 如果我必须替换这种情况下使用Spock测试框架的好处吗? 也许我应该删除它,只留在Mockito?

函数参数和对象的Kotlinunit testing

在Kotlin中,我们可以将函数对象作为函数参数传入。 如何创建unit testing来测试函数对象逻辑? (例如下面的funcParam ) 如何对具有函数参数的函数进行unit testing? (例如下面的functionWithFuncParam ) – 即我可以创建一个模拟funcParam ? class MyClass1(val myObject: MyObject) { val funcParam = fun (num: Int): Int { return num * num } fun myFunctionOne() { myObject.functionWithFuncParam(funcParam) } } class MyObject () { fun functionWithFuncParam(funcParam: (Int) -> Int) { println(funcParam(32)) } }

Mockito / Powermock不像Kotlin预期的那样工作

我使用mockito / powermock版本1.7.0,Spring Boot 2.0.0 M2,Kotlin 1.3.0。 我正在测试一个Spring @Service类,注入一个Repository。 我想在我的测试中嘲笑这个存储库,所以我可以测试这个类本身。 我是Kotlin的新手,但我来自Java,所以我尝试了这种“java方式”,但可能我错过了一些东西… 这是我的服务界面: interface MyService { fun create(myObject: MyObject): MyObject } …及其实施: @Service class DefaultMyService : MyService { @Autowired lateinit var myRepository: MyRepository override fun create(myObject: MyObject): MyObject = this.myRepository.insert(myObject) } 这里是我的存储库(我使用Mongo的Spring Data): interface MyRepository: MongoRepository 这是我的测试课: @RunWith(PowerMockRunner::class) @PrepareForTest(MyService::class) class MyServiceTest { @Mock lateinit var myRepository: […]

与Kotlin测试异步失败的Mockito

我正在尝试为我的测试学习Mockito,但使用Kotlin时则更加复杂。 我想在我的演示者中测试一个函数,当调用者从存储库异步获取对象列表并从侦听器触发Success / onError时。 之后,主持人根据回调告诉视图做任何事情。 以下是测试代码: @Mock lateinit var view: CategoriesActivityContract.View @Mock lateinit var repository: CategoriesRepository @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun shouldPassCategoriesToView2() { `doAnswer`({ it: InvocationOnMock? -> (it!!.arguments[0] as CategoriesRepository.OnGetCategoriesListener).onSuccess(DUMMY_CATEGORIES) null }).`when`(repository).getCategoriesAsync(any(CategoriesRepository.OnGetCategoriesListener::class.java)) val presenter: CategoriesActivityPresenter = CategoriesActivityPresenter(repository) presenter.bindView(view) presenter.loadCategories() `verify`(view).displayCategories(DUMMY_CATEGORIES) } 这是测试的代码: override fun loadCategories() { repository.getCategoriesAsync(object: CategoriesRepository.OnGetCategoriesListener { override fun onSuccess(categories: […]

嘲笑Kotlin和Mockito的通用接口

我正在尝试使用Mockito模拟Kotlin中的通用接口。 但到目前为止,我没有find自然的解决办法。 鉴于: interface X { fun x(): T } fun f(x: X) = xx() 我可以用下面的任何一个来模拟X : val x = f(Mockito.mock(X::class.java) as X) 但是这会产生一个“不受控制的投射”的警告。 @Mock lateinit var x: X 但我不想使用@Mock注释,因为我喜欢让我的字段最终。 引入一个辅助函数,就像mockito-kotlin库所做的那样: inline fun mock(): T = Mockito.mock(T::class.java)!! 然后像这样调用它: val x: X = mock() 但我不想使用帮助函数。 有没有一个优雅的纯Kotlin方式来模拟与Mockito的通用接口? (我更喜欢1的版本,没有警告。)