¿Por qué esta testing de instrumentación de Android invoca actividad en Crear dos veces?

Tengo esta class de testing:

class InspirationalQuoteInstrumentedTest { private lateinit var server: MockWebServer @Rule @JvmField val mActivityRule: ActivityTestRule<InspirationalQuoteActivity> = ActivityTestRule(InspirationalQuoteActivity::class.java) @Before fun setUp() { server = MockWebServer() server.start() Constants.BASE_URL = server.url("/").toString() } @After fun tearDown() { server.shutdown() } @Test fun ensureTheQuoteOfTheDayIsDisplayed() { println("Base URL: ${Constants.BASE_URL}") Log.e(TAG,"Base URL: ${Constants.BASE_URL}") val response200 = this::class.java.classLoader.getResource("200.json").readText() val jsonResponse = JSONObject(response200) val expectedQuote = jsonResponse .getJSONObject("contents") .getJSONArray("quotes") .getJSONObject(0) .getString("quote") server.enqueue(MockResponse() .setResponseCode(200) .setBody(response200)) val intent = Intent() mActivityRule.launchActivity(intent) onView(withId(R.id.inspirationalQuote)) .check(matches(withText(expectedQuote))) } companion object { val TAG = InspirationalQuoteInstrumentedTest::class.java.simpleName } } 

Y tengo esta actividad:

 class InspirationalQuoteActivity : AppCompatActivity() { private lateinit var quoteService: QuoteOfTheDayService private var quote: String = "" private var author: String = "" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_inspirational_quote) val textView = findViewById<TextView>(R.id.inspirationalQuote) as TextView val policy = StrictMode.ThreadPolicy.Builder().permitAll().build() StrictMode.setThreadPolicy(policy) textView.text = getQuoteOfTheDay() } private fun getQuoteOfTheDay(): String { quoteService = QuoteOfTheDayService() val qod = quoteService.getQuoteOfTheDay() val response = qod.execute() Log.e(TAG, "Response: $response") response?.let { quote = response.body()!!.contents.quotes[0].quote author = response.body()!!.contents.quotes[0].author } Log.e(TAG, "Expected Quote: $quote") return quote } companion object { private val TAG = InspirationalQuoteActivity::class.java.simpleName } } 

Cuando ejecuto mi testing, getQuoteOfTheDay() se ejecuta dos veces. ¿Lo que da? El problema es que estoy tratando de burlarse de una llamada api que parece que está funcionando. Espere, sin embargo, hay otro logging que no estoy seguro de dónde viene. Como reference, aquí está el out puesto en logcat

 Response: Response{protocol=http/1.1, code=200, message=OK, url=https://quotes.rest/qod} Expected Quote: Let us think the unthinkable, let us do the undoable, let us prepare to grapple with the ineffable itself, and see if we may not eff it after all. Response: Response{protocol=http/1.1, code=200, message=OK, url=http://localhost:37290/qod} Expected Quote: Winning is nice if you don't lose your integrity in the process. 

Como puede ver, presiono https://quotes.rest/qod una vez, y luego llego a mi server de simulacro después de eso.

    Me perdí algunos arguments en el constructor … Doh.

    Cambiando

     ActivityTestRule(InspirationalQuoteActivity::class.java) 

    a

     ActivityTestRule(InspirationalQuoteActivity::class.java, false, false) 

    Hizo el truco.

    Estás iniciando tu actividad con intentTestRule IntentsTestRule<>(InspirationalQuoteActivity.class, false, true);

    El tercer parámetro es launchActivity , debe establecerlo como falso