Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

151
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda