Как проверить этот выходной процесс был вызван?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как проверить этот выходной процесс был вызван?

Сообщение Anonymous »

контекст < /h3>
Я в настоящее время работаю над приложением, которое может быть полезно только на французском языке, потому что он использует словарь, и доступна только французская версия. Я решил отобразить диалог в стартапе, когда язык системы не французский, чтобы спросить пользователя, хотят ли они продолжить или прервать. Пока что хорошо, когда кнопка Abort нажимается, я закрываю все с помощью Activity.finish () и exitProcess () . Все работает нормально, и когда я делаю это на эмуляторе, я вижу, что приложение завершается. /> Вопрос
Как я могу чисто проверить , что приложение заканчивается после нажатия кнопки? 2025.1.2 Патч 1. Это подстриженная версия в моем собственном коде, чтобы продемонстрировать и воспроизводить проблему < /p>
функциональныйclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
KillAppTheme {
var inDialog by rememberSaveable { mutableStateOf(true) }
if (inDialog) {
KillDialog(
abort = {
finish()
exitProcess(0)
},
cont = {
inDialog = false
}
)
}
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
)
}
}
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}

@Composable
fun KillDialog(
abort: () -> Unit,
cont: () -> Unit,
) {
Dialog(onDismissRequest = {}) {
Column {
Text("Continue of abort?")
Row {
Button(onClick = cont) {
Text("Continue")
}
Button(onClick = abort) {
Text("Abort")
}
}
}
}
}
< /code>
функциональный@RunWith(AndroidJUnit4::class)
class KillAppTest {
/* Ensure that the dialog goes away after a click on the Continue button */
@Test
fun cont() {
uiAutomator {
startApp()
onElement{textAsString() == "Continue"}.click()
Assert.assertNull(onElementOrNull { textAsString() == "Continue" })
}
}
/* (should...) Ensure that the application terminates after clicking on Abort */
@Test
fun abort() {
uiAutomator {
startApp()
onElement{textAsString() == "Abort"}.click()
// test fails after this point
}
}
}
< /code>
Идентифицированные обходные пути < /h3>
  • Только используйте модульный тест в диалоговом окне, пройти лямбду, которая не выходит из приложения, и контроль, что лямбда называется < /li>
    просто использовать комментарий, чтобы сказать, что он может быть исключительно протестирован < /li>
    . /> Отказ от ответственности: < /h4>

    Код должен заслужить больше комментариев, но он используется только для демонстрации проблемы < /li>
    Показанный тест использует USAutomator < /code>, но я также пытался использовать Compose Tests с большим успехом < /li>
    . Это мой первый контакт, и я не стараюсь, и я не стал, и я не буду справляться с ним, и я не буду справиться с ним, и я не буду справиться с ним, и я не буду справиться с ним, и я не буду справиться с ним, и я не буду справиться с ним. сторона ...


Подробнее здесь: https://stackoverflow.com/questions/797 ... een-called
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»