Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
Las pruebas de MockitoJUnit se ejecutan en Android Studio pero fallan cuando se ejecutan en la línea de comando

Estoy tratando de ejecutar pruebas unitarias usando MockitoJUnitRunner; funcionan bien en Android Studio, pero algunas pruebas (no todas) fallan cuando se ejecutan en la línea de comandos, lo cual es un gran problema, necesito poder ejecutarlas desde mi plataforma de integración continua, no solo desde un IDE. Aquí está uno de los métodos reales que se están probando:

 internal fun requestSecurityQuestion() { if (isViewAttached) mvpView.showLoadingDialog() api.getSecurityQuestionToday(mDataManager.token, ACTION_ASK_SECURITY_QUESTION_ON_LOGIN, 0) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(object : CallbackWrapper<SettingsResponse>(mDataManager) { override fun onSuccess(response: SettingsResponse) { mDataManager.securityQuestion = response.question mDataManager.processId = response.processId if (isViewAttached) { mvpView.dismissLoadingDialog() mvpView.showVsecVerificationDialog(0, response.question!!) } } override fun onFailed(errorId: Int, jsonResponse: String?) { if (isViewAttached) mvpView.dismissLoadingDialog() } }) }

Aquí está una de las pruebas que fallan:

 @RunWith(MockitoJUnitRunner::class) class HomePresenterTest { @Mock private var mView: HomeView? = null @Mock private var mDataManager: DataManager? = null @Mock private var mApi: Api? = null lateinit var mPresenter: HomePresenter @Before fun setUp() { mPresenter = spy(HomePresenter(mDataManager!!)) mPresenter.attachView(mView!!) } @Test fun requestSecurityQuestion_onSuccess() { val response = SettingsResponse() response.question = TestData.secretQuestion response.processId = TestData.processId `when`(mPresenter.api).thenReturn(mApi) `when`(mDataManager!!.token).thenReturn(TestData.userToken) `when`<Observable<SettingsResponse>>(mApi!!.getSecurityQuestionToday( TestData.userToken, ACTION_ASK_SECURITY_QUESTION_ON_LOGIN, 0)) .thenReturn(Observable.just(response)) mPresenter.requestSecurityQuestion() verify<HomeView>(mView).dismissLoadingDialog() verify<HomeView>(mView).showVsecVerificationDialog(0, TestData.secretQuestion) } }

Y esto es lo que obtengo cuando ejecuto las pruebas en la línea de comando usando ./gradlew testDebugUnitTest

 > Task :app:testDebugUnitTest com.domain.app.screens.main.home.HomePresenterTest > requestSecurityQuestion_onSuccess FAILED org.mockito.exceptions.verification.WantedButNotInvoked at HomePresenterTest.kt:306

Además: estoy usando Android Studio 3.1.4, la versión de Gradle es 3.1.2, la versión de Mockito es 2.8.9

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tuve el mismo problema, pero con Java.

La razón para mí fue que traté de devolver un simulacro en un método que se llamó en un contexto estático, por lo que no me molestó mi llamada Mockito.when() . Aunque es una mala práctica hacerlo, moví la llamada al método fuera del contexto estático, porque no había necesidad de que fuera estático y funcionó.

Tal vez eso ayude.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda