94 lines
3.1 KiB
Kotlin
94 lines
3.1 KiB
Kotlin
package com.mogo.functions.test
|
|
|
|
import android.graphics.Color
|
|
import android.graphics.drawable.ColorDrawable
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.Button
|
|
import androidx.test.core.app.ActivityScenario
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
import androidx.test.filters.LargeTest
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
|
import com.mogo.eagle.core.function.main.MainLauncherActivity
|
|
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
|
import kotlinx.coroutines.delay
|
|
import kotlinx.coroutines.runBlocking
|
|
import org.junit.Before
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
@LargeTest
|
|
class CrashTest {
|
|
|
|
lateinit var launch: ActivityScenario<MainLauncherActivity>
|
|
|
|
|
|
@Before
|
|
fun before() {
|
|
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
|
|
}
|
|
|
|
@Test
|
|
fun testJavaCrash() = runBlocking {
|
|
val arguments = InstrumentationRegistry.getArguments()
|
|
val delay = arguments.getString("delay", "0")
|
|
val newThread = arguments.getString("new_thread", "false")
|
|
val delayLong = delay.toLong()
|
|
if (delayLong <= 0) {
|
|
throw AssertionError("illegal state ..")
|
|
}
|
|
delay(delayLong)
|
|
launch.onActivity {
|
|
CallerDevaToolsManager.logcat()?.testJavaCrash(newThread.toBoolean())
|
|
}
|
|
delay(TimeUnit.MINUTES.toMillis(10))
|
|
}
|
|
|
|
@Test
|
|
fun testANRCrash() = runBlocking {
|
|
val arguments = InstrumentationRegistry.getArguments()
|
|
val delay = arguments.getString("delay", "0")
|
|
val delayLong = delay.toLong()
|
|
if (delayLong <= 0) {
|
|
throw AssertionError("illegal state ..")
|
|
}
|
|
delay(delayLong)
|
|
launch.onActivity { itx ->
|
|
|
|
val content = (itx.findViewById<View>(android.R.id.content) as ViewGroup)
|
|
content.postDelayed({
|
|
content.addView(Button(itx).also {
|
|
it.background = ColorDrawable(Color.RED)
|
|
it.setPadding(20, 20, 20, 20)
|
|
it.textSize = 40.0f
|
|
it.text = "点我触发ANR"
|
|
it.setTextColor(Color.WHITE)
|
|
it.onClick {
|
|
CallerDevaToolsManager.logcat()?.testAnrCrash()
|
|
}
|
|
})
|
|
}, 1000)
|
|
|
|
}
|
|
delay(TimeUnit.MINUTES.toMillis(10))
|
|
}
|
|
|
|
@Test
|
|
fun testNativeCrash() = runBlocking {
|
|
val arguments = InstrumentationRegistry.getArguments()
|
|
val delay = arguments.getString("delay", "0")
|
|
val newThread = arguments.getString("new_thread", "false")
|
|
val delayLong = delay.toLong()
|
|
if (delayLong <= 0) {
|
|
throw AssertionError("illegal state ..")
|
|
}
|
|
delay(delayLong)
|
|
launch.onActivity {
|
|
CallerDevaToolsManager.logcat()?.testNativeCrash(newThread.toBoolean())
|
|
}
|
|
delay(TimeUnit.MINUTES.toMillis(10))
|
|
}
|
|
} |