Tag: mockito

什么是Java相当于Kotlin的函数类型?

我有Kotlin代码和Java测试代码。 由于Kotlin和Mockito不是最好的朋友,所以我没有将测试代码迁移到Kotlin 。 在Kotlin我有块类型的方法。 例如: open fun getProductInfo(resultListener: (List<Deal>)->Unit, errorListener: (Throwable)->Unit) { … } 现在我想在Java测试中存储这个方法。 什么是类型的Java相当于什么? 换句话说,我应该写下面的代码: doAnswer(invocation -> { ??? resultListener = (???) invocation.getArguments()[0]; // call back resultListener return null; }).when(api).getProductInfo(any(), any());

Kotlin:手动内联泛型函数会产生不同的结果?

我有一个简单的测试课 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> […]

Mockito对象与Mockito Kotlin不沾方法

我有以下代码: @RunWith(MockitoJUnitRunner::class) class OnboardingViewModelTest { @Mock lateinit var authService : AuthService lateinit var internetProvider: InternetStatusProvider private lateinit var viewModel: OnboardingViewModel @Before fun setup() { internetProvider = mock() whenever(internetProvider.hasInternet()).thenReturn(true) } InternetStatusProvider的构造函数如下所示: InternetStatusProvider(context:Context) 由于该方法的实现使用在构造函数context传递的context并调用真正的方法,因此在为internetProvider.hasInternet()方法存根时存在NullPointerException异常? 我在这里错过了什么? 整个问题的关键是要把这个方法真正的实现吗?

如何使用mockito在kotlin上验证setter的调用?

interface LoginDisplay { var username: String var password: String } class LoginActivityLoginDisplay : LoginDisplay { override var username: String get() = usernameEditView.text.toString() set(value) { usernameEditView.setText(value) } override var password: String get() = passwordEditView.text.toString() set(value) { passwordEditView.setText(value) } } 这是我想用Mockito测试的代码示例,如下所示: verify(contract.loginDisplay).username 棘手的是 – 在这个调用中,我只能验证字段用户名的getter,同时我想测试这个字段的setter的调用。 任何帮助?

测试环境配置:Android + JUnit 5 + Mockito + Spek + Kotlin

我很难配置基于JUnit Jupiter(5)的测试环境。 我有两个不同的错误: WARNING: TestEngine with ID 'spek' failed to discover tests org.junit.platform.commons.util.PreconditionViolationException: Could not load class with name… Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)V at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)… 配置如下。 主build.gradle : apply plugin: 'org.junit.platform.gradle.plugin' buildscript { ext.kotlin_version = '1.1.4-3' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta5' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.junit.platform:junit-platform-gradle-plugin:1.0.0" classpath "de.mannodermaus.gradle.plugins:android-junit5:1.0.0" } } […]

Mockito可以在Kotlin模拟访问者吗?

是否有可能嘲笑Mockito的财产吸气和二传手? 像这样的东西: @Test fun three() { val m = mock<Ddd>() { // on { getQq() }.doReturn("mocked!") } assertEquals("mocked!", m.qq) } open class Ddd { var qq : String = "start" set(value) { field = value + " by setter" } get() { return field + " by getter" } }

java.lang.AbstractMethodError:用Mockito在Kotlin上运行espresso时的抽象方法

我有一个使用mockito的器乐浓缩咖啡测试。 测试类如下。 import android.support.test.InstrumentationRegistry import android.support.test.rule.ActivityTestRule import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.rules.RuleChain import org.junit.rules.TestRule import android.support.test.espresso.Espresso.onView import android.support.test.espresso.assertion.ViewAssertions.matches import android.support.test.espresso.matcher.ViewMatchers.withId import android.support.test.espresso.matcher.ViewMatchers.withText import org.mockito.Mockito.`when` class MainActivityTest { val component = TestComponentRule(InstrumentationRegistry.getTargetContext()) val main = ActivityTestRule(MainActivity::class.java, false, false) // TestComponentRule needs to go first so we make sure the ApplicationTestComponent is set // in […]

嘲弄的对象仍在调用方法(Mockito + Kotlin)

我试图测试这个类: class LoginPresenter(val mPostman: Postman) : ContractLoginPresenter, Validator.ValidationListener { private var view: ContractLoginView? = null override fun setView(_view: BaseView) { view = _view as ContractLoginView } override fun getValidationListener(): Validator.ValidationListener { return this } override fun onValidationSucceeded() { view!!.getContext().showCircularProgressBar() mPostman.login(view!!.getUsername(), view!!.getPassword()) } 为此,我创建了这个测试类: @RunWith(PowerMockRunner::class) @PrepareForTest(App::class) class TestLoginPresenter { var mockedPostman = mock(Postman::class.java) var mockedComponent = […]

当使用Mockito和kotlin时,只允许在类文字的左侧使用类

我使用Android Studio的转换工具来转换现有的Java测试类。 我得到这个错误: 只有类允许在类文字的左侧 这里是使用的测试用例: Java的 doAnswer(answerVoid( (OnDataListListener<List<BEntity>> myCallback) -> myCallback.onSuccess(mList))).when( mInteractor).performGetBList(any(OnDataListListener.class), anyBoolean()); 科特林 doAnswer(answerVoid { listener: OnDataListListener<List<BEntity>> -> listener.onSuccess( emptyList()) }).`when`<DragonInteractor>(mInteractor) .performGetBList(any<OnDataListListener>(OnDataListListener<*>::class.java), anyBoolean()) 那么在这种情况下如何使用泛型参数? 谢谢。

Powermockito间谍和Kotlin的对象声明:不能继承最终的类

在将测试从java转换为kotlin时,Koltin和Powermocks的spy()中的对象声明有一些问题 open class TestData(val test: String){ open fun test(){ println("TestData") } } @RunWith(PowerMockRunner::class) open class MockitoTests { lateinit var testData: TestData lateinit var testDataObjectDeclaration: TestData @Before open fun setup(){ testData = PowerMockito.spy(TestData("Test")) testDataObjectDeclaration = PowerMockito.spy(object: TestData("test"){ override fun test() {} }) } @Test fun dummyTest() {} } 当我运行测试时,我得到以下错误: java.lang.IllegalArgumentException:无法继承最终的类类at.lukle.kotlinplayground.MockitoTests $ setup $ 1 at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) […]