class LoginActivityPresenter(private var authUseCase: AuthStructure, private var view: LoginActivityView, private var database: SupervisorDatabaseInterface) {
fun tryLogin(identifier: String, password: String) {
val disposable = database.getQrCode() //this retuns Single<QRCode>
.doOnSubscribe { view.showProgressDialog() }
.doAfterTerminate { view.hideProgressDialog() }
.flatMap { it -> authUseCase.authenticate(identifier, password, it.qrcode) }//this retuns Single<UserToken>
.subscribe(
{
database.insertUserToken(it)
view.loginSucess()
},
{
when (it) {
is EmptyResultSetException -> {
view.loginErrorNoQrCode()
}
else -> {
view.loginError()
it.printStackTrace()
}
}
}
)
}
}
class LoginActivityPresenterTest {
private val immediateScheduler = object : Scheduler() {
override fun createWorker(): Worker {
return ExecutorScheduler.ExecutorWorker(Executor { it.run() })
}
}
private fun <T> any(): T {
Mockito.any<T>()
return uninitialized()
}
private fun <T> uninitialized(): T = null as T
@Mock
private lateinit var mLoginActivityView: LoginActivityView
@Mock
private lateinit var mAuthStructure: AuthStructure
@Mock
private lateinit var mSupervisorDatabaseInterface: SupervisorDatabaseInterface
@InjectMocks
private lateinit var mLoginActivityPresenter: LoginActivityPresenter
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
RxJavaPlugins.setInitIoSchedulerHandler { immediateScheduler }
RxAndroidPlugins.setInitMainThreadSchedulerHandler { immediateScheduler }
}
@After
fun tearDown() {
RxJavaPlugins.reset()
RxAndroidPlugins.reset()
}
@Test
fun `should happen when you successfully log in`() {
val userToken = UserToken()
val qrCode = QRCode("qr")
val identifier = "test"
val password = "password"
`when`(mSupervisorDatabaseInterface.getQrCode()).thenReturn(Single.just(qrCode))
mLoginActivityPresenter.tryLogin(identifier, password)
verify(mLoginActivityView, times(1)).showProgressDialog()
verify(mLoginActivityView, times(1)).hideProgressDialog()
verify(mLoginActivityView, times(1)).loginSucess()
verify(mLoginActivityView, never()).loginError()
}
}
MLoginActivityView.LoginError();->在id.teste.supervisor.presenters.login.loginActivityPresenter$tryLogin$Disposable$5.accept(loginActivitypresenter.kt:25)
MLoginActivityView.HideProgressDialog();->在id.teste.supervisor.presenters.login.loginActivityPresenter$tryLogin$Disposable$2.run(loginActivitypresenter.kt:12)
需要但未调用:MLoginActivityView.LoginSucess();->在id.teste.supervisor.presenters.login.loginactivitypresentertest.成功登录时应发生(loginactivitypresentertest.kt:78)
但是,与此模拟的交互正好有3个:mLoginActivityView.ShowProgressDialog();->在id.teste.supervisor.presenters.login.loginActivityPresenter$tryLogin$Disposable$1.accept(loginActivitypresenter.kt:11)
MLoginActivityView.LoginError();->在id.teste.supervisor.presenters.login.loginActivityPresenter$tryLogin$Disposable$5.accept(loginActivitypresenter.kt:25)
MLoginActivityView.HideProgressDialog();->在id.teste.supervisor.presenters.login.loginActivityPresenter$tryLogin$Disposable$2.run(loginActivitypresenter.kt:12)
`when`(mAunthStructure.authenticate(any(), any(), any())).thenReturn(
Single.just(
UserToken()
)
进程结束,退出代码-1
问题内容: 有人可以帮我这个忙。我正在使用Jersey休息测试框架版本2.21(在Grizzly容器上)编写Rest资源的单元测试。 当我调试测试类时,看到myManager的模拟对象。但是,当调试进入“ MyResouce类”时,myManager对象将变为null并得到NullPointer异常。 尝试过其他人提供的解决方案,但是没有运气。请有人帮我。我将近三天就遇到这个问题。:( 我的资源类
为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith
问题内容: 我正在使用RestTemplate 方法将正文发布到端点。我需要使用Mockito为我的代码编写测试用例的帮助。返回类型为void,但是可以将其更改为,或者需要进行测试。我已经提到了许多其他文档,但是它们非常笼统,我尝试使用它们,但是由于and和return类型是不同的,所以大多数对我来说都不起作用。。任何建议表示赞赏。谢谢 这是我的Java课 问题答案: 您正在测试MyClass类中
我在java中使用mockito编写单元测试。 这就是我要测试的声明。 电影是电影名称的集合,是识别电影的关键。 我嘲笑了守望者班 Mockito.when(watcher.watch(Matchers.any(Set.class))) “thenReturn”中包括什么??
我有DaoImpl类: 我的测试是: 测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。